| 627 | |
| 628 | template <typename Dtype> |
| 629 | void Net<Dtype>::BackwardDebugInfo(const int layer_id) { |
| 630 | const vector<Blob<Dtype>*>& bottom_vec = bottom_vecs_[layer_id]; |
| 631 | for (int bottom_id = 0; bottom_id < bottom_vec.size(); ++bottom_id) { |
| 632 | if (!bottom_need_backward_[layer_id][bottom_id]) { continue; } |
| 633 | const Blob<Dtype>& blob = *bottom_vec[bottom_id]; |
| 634 | const string& blob_name = blob_names_[bottom_id_vecs_[layer_id][bottom_id]]; |
| 635 | const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); |
| 636 | LOG_IF(INFO, Caffe::root_solver()) |
| 637 | << " [Backward] " |
| 638 | << "Layer " << layer_names_[layer_id] |
| 639 | << ", bottom blob " << blob_name |
| 640 | << " diff: " << diff_abs_val_mean; |
| 641 | } |
| 642 | for (int param_id = 0; param_id < layers_[layer_id]->blobs().size(); |
| 643 | ++param_id) { |
| 644 | if (!layers_[layer_id]->param_propagate_down(param_id)) { continue; } |
| 645 | const Blob<Dtype>& blob = *layers_[layer_id]->blobs()[param_id]; |
| 646 | const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); |
| 647 | LOG_IF(INFO, Caffe::root_solver()) |
| 648 | << " [Backward] " |
| 649 | << "Layer " << layer_names_[layer_id] |
| 650 | << ", param blob " << param_id |
| 651 | << " diff: " << diff_abs_val_mean; |
| 652 | } |
| 653 | } |
| 654 | |
| 655 | template <typename Dtype> |
| 656 | void Net<Dtype>::UpdateDebugInfo(const int param_id) { |
nothing calls this directly
no test coverage detected