| 654 | |
| 655 | template <typename Dtype> |
| 656 | void Net<Dtype>::UpdateDebugInfo(const int param_id) { |
| 657 | const Blob<Dtype>& blob = *params_[param_id]; |
| 658 | const int param_owner = param_owners_[param_id]; |
| 659 | const string& layer_name = layer_names_[param_layer_indices_[param_id].first]; |
| 660 | const string& param_display_name = param_display_names_[param_id]; |
| 661 | const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); |
| 662 | if (param_owner < 0) { |
| 663 | const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); |
| 664 | LOG_IF(INFO, Caffe::root_solver()) |
| 665 | << " [Update] Layer " << layer_name |
| 666 | << ", param " << param_display_name |
| 667 | << " data: " << data_abs_val_mean |
| 668 | << "; diff: " << diff_abs_val_mean; |
| 669 | } else { |
| 670 | const string& owner_layer_name = |
| 671 | layer_names_[param_layer_indices_[param_owner].first]; |
| 672 | LOG_IF(INFO, Caffe::root_solver()) |
| 673 | << " [Update] Layer " << layer_name |
| 674 | << ", param blob " << param_display_name |
| 675 | << " (owned by layer " << owner_layer_name << ", " << "param " |
| 676 | << param_display_names_[param_owners_[param_id]] << ")" |
| 677 | << " diff: " << diff_abs_val_mean; |
| 678 | } |
| 679 | } |
| 680 | |
| 681 | template <typename Dtype> |
| 682 | void Net<Dtype>::ShareTrainedLayersWith(const Net* other) { |