| 117 | |
| 118 | template <typename Dtype> |
| 119 | void SGDSolver<Dtype>::Normalize(int param_id) { |
| 120 | if (this->param_.iter_size() == 1) { return; } |
| 121 | // Scale gradient to counterbalance accumulation. |
| 122 | const vector<Blob<Dtype>*>& net_params = this->net_->learnable_params(); |
| 123 | const Dtype accum_normalization = Dtype(1.) / this->param_.iter_size(); |
| 124 | switch (Caffe::mode()) { |
| 125 | case Caffe::CPU: { |
| 126 | caffe_scal(net_params[param_id]->count(), accum_normalization, |
| 127 | net_params[param_id]->mutable_cpu_diff()); |
| 128 | break; |
| 129 | } |
| 130 | case Caffe::GPU: { |
| 131 | #ifndef CPU_ONLY |
| 132 | caffe_gpu_scal(net_params[param_id]->count(), accum_normalization, |
| 133 | net_params[param_id]->mutable_gpu_diff()); |
| 134 | #else |
| 135 | NO_GPU; |
| 136 | #endif |
| 137 | break; |
| 138 | } |
| 139 | default: |
| 140 | LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | template <typename Dtype> |
| 145 | void SGDSolver<Dtype>::Regularize(int param_id) { |
nothing calls this directly
no test coverage detected