| 637 | |
| 638 | template <typename Dtype> |
| 639 | void Net<Dtype>::UpdateDebugInfo(const int param_id) { |
| 640 | const Blob<Dtype>& blob = *params_[param_id]; |
| 641 | const int param_owner = param_owners_[param_id]; |
| 642 | const string& layer_name = layer_names_[param_layer_indices_[param_id].first]; |
| 643 | const string& param_display_name = param_display_names_[param_id]; |
| 644 | const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); |
| 645 | if (param_owner < 0) { |
| 646 | const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); |
| 647 | LOG_IF(INFO, Caffe::root_solver()) |
| 648 | << " [Update] Layer " << layer_name |
| 649 | << ", param " << param_display_name |
| 650 | << " data: " << data_abs_val_mean |
| 651 | << "; diff: " << diff_abs_val_mean; |
| 652 | } else { |
| 653 | const string& owner_layer_name = |
| 654 | layer_names_[param_layer_indices_[param_owner].first]; |
| 655 | LOG_IF(INFO, Caffe::root_solver()) |
| 656 | << " [Update] Layer " << layer_name |
| 657 | << ", param blob " << param_display_name |
| 658 | << " (owned by layer " << owner_layer_name << ", " << "param " |
| 659 | << param_display_names_[param_owners_[param_id]] << ")" |
| 660 | << " diff: " << diff_abs_val_mean; |
| 661 | } |
| 662 | } |
| 663 | |
| 664 | template <typename Dtype> |
| 665 | void Net<Dtype>::ShareTrainedLayersWith(const Net* other) { |