From 7d32713117ae5ad4463a5770708d754257256298 Mon Sep 17 00:00:00 2001 From: thatguymike Date: Tue, 19 Jan 2016 17:01:34 -0800 Subject: [PATCH 1/2] Workaround for inplace max pooling issue --- src/caffe/layer_factory.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 4d912d28351..6b065810dde 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -91,7 +91,16 @@ shared_ptr > GetPoolingLayer(const LayerParameter& param) { << "Using Caffe's own pooling layer."; return shared_ptr >(new PoolingLayer(param)); } - return shared_ptr >(new CuDNNPoolingLayer(param)); +// CuDNN assumes layers are not being modified in place, thus breaking +// our index tracking for updates in some cases in Caffe. Until there +// is a workaround in Caffe (index management) or cuDNN, use Caffe +// layer to max pooling, or don't use in place layers after max +// pooling layers + if (param.pooling_param().pool() == PoolingParameter_PoolMethod_MAX) { + return shared_ptr >(new PoolingLayer(param)); + } else { + return shared_ptr >(new CuDNNPoolingLayer(param)); + } #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; From b26c82a882d58f13314ad7dc792d9e5c9fc5f23f Mon Sep 17 00:00:00 2001 From: thatguymike Date: Wed, 20 Jan 2016 08:35:36 -0800 Subject: [PATCH 2/2] Indent comments --- src/caffe/layer_factory.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 6b065810dde..e967bd6181c 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -91,11 +91,11 @@ shared_ptr > GetPoolingLayer(const LayerParameter& param) { << "Using Caffe's own pooling layer."; return shared_ptr >(new PoolingLayer(param)); } -// CuDNN assumes layers are not being modified in place, thus breaking -// our index tracking for updates in some cases in Caffe. Until there -// is a workaround in Caffe (index management) or cuDNN, use Caffe -// layer to max pooling, or don't use in place layers after max -// pooling layers + // CuDNN assumes layers are not being modified in place, thus + // breaking our index tracking for updates in some cases in Caffe. + // Until there is a workaround in Caffe (index management) or + // cuDNN, use Caffe layer to max pooling, or don't use in place + // layers after max pooling layers if (param.pooling_param().pool() == PoolingParameter_PoolMethod_MAX) { return shared_ptr >(new PoolingLayer(param)); } else {