diff --git a/src/caffe/layers/prelu_layer.cpp b/src/caffe/layers/prelu_layer.cpp index 7119a274dd3..785475a6f66 100644 --- a/src/caffe/layers/prelu_layer.cpp +++ b/src/caffe/layers/prelu_layer.cpp @@ -112,7 +112,7 @@ void PReLULayer::Backward_cpu(const vector*>& top, // keep top_diff unchanged. if (this->param_propagate_down_[0]) { Dtype* slope_diff = this->blobs_[0]->mutable_cpu_diff(); - caffe_set(this->blobs_[0]->count(), Dtype(0), slope_diff); + // caffe_set(this->blobs_[0]->count(), Dtype(0), slope_diff); for (int i = 0; i < count; ++i) { int c = (i / dim) % channels / div_factor; slope_diff[c] += top_diff[i] * bottom_data[i] * (bottom_data[i] <= 0); diff --git a/src/caffe/layers/prelu_layer.cu b/src/caffe/layers/prelu_layer.cu index fd0eda5d191..e527705b055 100644 --- a/src/caffe/layers/prelu_layer.cu +++ b/src/caffe/layers/prelu_layer.cu @@ -82,7 +82,7 @@ void PReLULayer::Backward_gpu(const vector*>& top, if (this->param_propagate_down_[0]) { Dtype* slope_diff = this->blobs_[0]->mutable_gpu_diff(); // slope_diff is set as 0, then accumulated over batches - caffe_gpu_set(this->blobs_[0]->count(), Dtype(0), slope_diff); + // caffe_gpu_set(this->blobs_[0]->count(), Dtype(0), slope_diff); int cdim = channels * dim; Dtype dsum = 0.; for (int n = 0; n < bottom[0]->num(); ++n) { @@ -106,7 +106,8 @@ void PReLULayer::Backward_gpu(const vector*>& top, } } if (channel_shared_) { - caffe_gpu_set(this->blobs_[0]->count(), Dtype(dsum), slope_diff); + // caffe_gpu_set(this->blobs_[0]->count(), Dtype(dsum), slope_diff); + caffe_gpu_add_scalar(this->blobs_[0]->count(), Dtype(dsum), slope_diff); } } // Propagate to bottom