| 722 | |
| 723 | template <typename Dtype> |
| 724 | void Net<Dtype>::Backward() { |
| 725 | BackwardFromTo(layers_.size() - 1, 0); |
| 726 | if (debug_info_) { |
| 727 | Dtype asum_data = 0, asum_diff = 0, sumsq_data = 0, sumsq_diff = 0; |
| 728 | for (int i = 0; i < learnable_params_.size(); ++i) { |
| 729 | asum_data += learnable_params_[i]->asum_data(); |
| 730 | asum_diff += learnable_params_[i]->asum_diff(); |
| 731 | sumsq_data += learnable_params_[i]->sumsq_data(); |
| 732 | sumsq_diff += learnable_params_[i]->sumsq_diff(); |
| 733 | } |
| 734 | const Dtype l2norm_data = std::sqrt(sumsq_data); |
| 735 | const Dtype l2norm_diff = std::sqrt(sumsq_diff); |
| 736 | LOG(ERROR) << " [Backward] All net params (data, diff): " |
| 737 | << "L1 norm = (" << asum_data << ", " << asum_diff << "); " |
| 738 | << "L2 norm = (" << l2norm_data << ", " << l2norm_diff << ")"; |
| 739 | } |
| 740 | } |
| 741 | |
| 742 | template <typename Dtype> |
| 743 | void Net<Dtype>::Reshape() { |