int h = (index / width) % height;
int c = (index / width / height) % channels;
int n = index / width / height / channels;
- int phstart = (h < ksize) ? 0 : (h - ksize) / stride + 1;
+ int phstart = (h < kernel_size) ? 0 : (h - kernel_size) / stride + 1;
int phend = min(h / stride + 1, pooled_height);
- int pwstart = (w < ksize) ? 0 : (w - ksize) / stride + 1;
+ int pwstart = (w < kernel_size) ? 0 : (w - kernel_size) / stride + 1;
int pwend = min(w / stride + 1, pooled_width);
Dtype gradient = 0;
top_diff += (n * channels + c) * pooled_height * pooled_width;
// Since we have the mask we only need count top_diff
count = top[0]->count();
// NOLINT_NEXT_LINE(whitespace/operators)
- caffe_gpu_memset(count,Dtype(0.),bottom_diff);
+ caffe_gpu_set(count,Dtype(0.),bottom_diff);
MaxPoolBackward<Dtype><<<CAFFE_GET_BLOCKS(count), CAFFE_CUDA_NUM_THREADS>>>(
count, top_diff, top[0]->num(), channels_,
height_, width_, pooled_height_, pooled_width_,
TYPED_TEST(MaxPoolingDropoutTest, TestSetup) {
LayerParameter layer_param;
- layer_param.set_kernelsize(3);
- layer_param.set_stride(2);
- PoolingLayer<TypeParam> layer(layer_param);
- layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_));
+ PoolingParameter* pooling_param = layer_param.mutable_pooling_param();
+ pooling_param->set_kernel_size(3);
+ pooling_param->set_stride(2);
+ PoolingLayer<TypeParam> max_layer(layer_param);
+ max_layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_));
DropoutLayer<TypeParam> dropout_layer(layer_param);
dropout_layer.SetUp(this->blob_top_vec_, &(this->blob_top_vec_));
EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_->num());
TYPED_TEST(MaxPoolingDropoutTest, CPUForward) {
- LayerParameter layer_param;
- layer_param.set_kernelsize(3);
- layer_param.set_stride(2);
Caffe::set_mode(Caffe::CPU);
+ LayerParameter layer_param;
+ PoolingParameter* pooling_param = layer_param.mutable_pooling_param();
+ pooling_param->set_kernel_size(3);
+ pooling_param->set_stride(2);
PoolingLayer<TypeParam> layer(layer_param);
layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_));
layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_));
dropout_layer.SetUp(this->blob_top_vec_, &(this->blob_top_vec_));
dropout_layer.Forward(this->blob_top_vec_, &(this->blob_top_vec_));
sum = 0.;
- TypeParam scale = 1. / (1. - layer_param.dropout_ratio());
+ TypeParam scale = 1. / (1. - layer_param.dropout_param().dropout_ratio());
top_data = this->blob_top_->cpu_data();
for (int i = 0; i < this->blob_top_->count(); ++i) {
sum += top_data[i];
}
TYPED_TEST(MaxPoolingDropoutTest, GPUForward) {
- LayerParameter layer_param;
- layer_param.set_kernelsize(3);
- layer_param.set_stride(2);
Caffe::set_mode(Caffe::GPU);
+ LayerParameter layer_param;
+ PoolingParameter* pooling_param = layer_param.mutable_pooling_param();
+ pooling_param->set_kernel_size(3);
+ pooling_param->set_stride(2);
PoolingLayer<TypeParam> layer(layer_param);
layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_));
layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_));
dropout_layer.SetUp(this->blob_top_vec_, &(this->blob_top_vec_));
dropout_layer.Forward(this->blob_top_vec_, &(this->blob_top_vec_));
sum = 0.;
- TypeParam scale = 1. / (1. - layer_param.dropout_ratio());
+ TypeParam scale = 1. / (1. - layer_param.dropout_param().dropout_ratio());
top_data = this->blob_top_->cpu_data();
for (int i = 0; i < this->blob_top_->count(); ++i) {
sum += top_data[i];
}
TYPED_TEST(MaxPoolingDropoutTest, CPUBackward) {
- LayerParameter layer_param;
- layer_param.set_kernelsize(3);
- layer_param.set_stride(2);
Caffe::set_mode(Caffe::CPU);
Caffe::set_phase(Caffe::TRAIN);
+ LayerParameter layer_param;
+ PoolingParameter* pooling_param = layer_param.mutable_pooling_param();
+ pooling_param->set_kernel_size(3);
+ pooling_param->set_stride(2);
PoolingLayer<TypeParam> layer(layer_param);
layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_));
layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_));
}
TYPED_TEST(MaxPoolingDropoutTest, GPUBackward) {
- LayerParameter layer_param;
- layer_param.set_kernelsize(3);
- layer_param.set_stride(2);
Caffe::set_mode(Caffe::GPU);
Caffe::set_phase(Caffe::TRAIN);
+ LayerParameter layer_param;
+ PoolingParameter* pooling_param = layer_param.mutable_pooling_param();
+ pooling_param->set_kernel_size(3);
+ pooling_param->set_stride(2);
PoolingLayer<TypeParam> layer(layer_param);
layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_));
layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_));