summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Follmann <follmann@mvtec.com>2016-12-29 14:46:16 +0100
committerJeff Donahue <jeff.donahue@gmail.com>2017-04-13 13:29:28 -0700
commite93fcd267582888f960ca48d6e0c2e719d4ea09b (patch)
tree30426e3968c5c6d5b235b3ea004e9e19b853a996
parente98023af4a570e3105486b661e4c4d1855c0dd79 (diff)
downloadcaffe-e93fcd267582888f960ca48d6e0c2e719d4ea09b.tar.gz
caffe-e93fcd267582888f960ca48d6e0c2e719d4ea09b.tar.bz2
caffe-e93fcd267582888f960ca48d6e0c2e719d4ea09b.zip
GPU BatchNormLayer: replace powx with mul and sqrt
-rw-r--r--src/caffe/layers/batch_norm_layer.cu8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/caffe/layers/batch_norm_layer.cu b/src/caffe/layers/batch_norm_layer.cu
index c21713c8..a35e778e 100644
--- a/src/caffe/layers/batch_norm_layer.cu
+++ b/src/caffe/layers/batch_norm_layer.cu
@@ -48,14 +48,14 @@ void BatchNormLayer<Dtype>::Forward_gpu(const vector<Blob<Dtype>*>& bottom,
if (!use_global_stats_) {
// compute variance using var(X) = E((X-EX)^2)
- caffe_gpu_powx(top[0]->count(), top_data, Dtype(2),
+ caffe_gpu_mul(top[0]->count(), top[0]->gpu_data(), top[0]->gpu_data(),
temp_.mutable_gpu_data()); // (X-EX)^2
caffe_gpu_gemv<Dtype>(CblasNoTrans, channels_ * num, spatial_dim,
1. / (num * spatial_dim), temp_.gpu_data(),
spatial_sum_multiplier_.gpu_data(), 0.,
num_by_chans_.mutable_gpu_data());
- caffe_gpu_gemv<Dtype>(CblasTrans, num, channels_, 1.,
- num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0.,
+ caffe_gpu_gemv<Dtype>(CblasTrans, num, channels_, Dtype(1.),
+ num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), Dtype(0.),
variance_.mutable_gpu_data()); // E((X_EX)^2)
// compute and save moving average
@@ -72,7 +72,7 @@ void BatchNormLayer<Dtype>::Forward_gpu(const vector<Blob<Dtype>*>& bottom,
// normalize variance
caffe_gpu_add_scalar(variance_.count(), eps_, variance_.mutable_gpu_data());
- caffe_gpu_powx(variance_.count(), variance_.gpu_data(), Dtype(0.5),
+ caffe_gpu_sqrt(variance_.count(), variance_.gpu_data(),
variance_.mutable_gpu_data());
// replicate variance to input size