| 705 | |
| 706 | template <typename Dtype> |
| 707 | void Net<Dtype>::Backward() { |
| 708 | BackwardFromTo(layers_.size() - 1, 0); |
| 709 | if (debug_info_) { |
| 710 | Dtype asum_data = 0, asum_diff = 0, sumsq_data = 0, sumsq_diff = 0; |
| 711 | for (int i = 0; i < learnable_params_.size(); ++i) { |
| 712 | asum_data += learnable_params_[i]->asum_data(); |
| 713 | asum_diff += learnable_params_[i]->asum_diff(); |
| 714 | sumsq_data += learnable_params_[i]->sumsq_data(); |
| 715 | sumsq_diff += learnable_params_[i]->sumsq_diff(); |
| 716 | } |
| 717 | const Dtype l2norm_data = std::sqrt(sumsq_data); |
| 718 | const Dtype l2norm_diff = std::sqrt(sumsq_diff); |
| 719 | LOG(ERROR) << " [Backward] All net params (data, diff): " |
| 720 | << "L1 norm = (" << asum_data << ", " << asum_diff << "); " |
| 721 | << "L2 norm = (" << l2norm_data << ", " << l2norm_diff << ")"; |
| 722 | } |
| 723 | } |
| 724 | |
| 725 | template <typename Dtype> |
| 726 | void Net<Dtype>::Reshape() { |