| 23 | |
| 24 | template <typename Dtype> |
| 25 | void AbsValLayer<Dtype>::Backward_cpu(const vector<Blob<Dtype>*>& top, |
| 26 | const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) { |
| 27 | const int count = top[0]->count(); |
| 28 | const Dtype* top_diff = top[0]->cpu_diff(); |
| 29 | if (propagate_down[0]) { |
| 30 | const Dtype* bottom_data = bottom[0]->cpu_data(); |
| 31 | Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); |
| 32 | caffe_cpu_sign(count, bottom_data, bottom_diff); |
| 33 | caffe_mul(count, bottom_diff, top_diff, bottom_diff); |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | #ifdef CPU_ONLY |
| 38 | STUB_GPU(AbsValLayer); |
nothing calls this directly
no test coverage detected