From 909e4d83e3f19df92316b7bbd85225ef2a3156c3 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Tue, 17 Jun 2014 22:08:00 -0700 Subject: [PATCH] test rectangular im2col --- src/caffe/test/test_im2col_layer.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index a40f59d..0463cee 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -83,4 +83,37 @@ TYPED_TEST(Im2colLayerTest, TestGradient) { } +TYPED_TEST(Im2colLayerTest, TestRect) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_kernel_h(5); + convolution_param->set_kernel_w(3); + convolution_param->set_stride(2); + Im2colLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); + layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); + // We are lazy and will only check the top left block + for (int c = 0; c < 45; ++c) { + EXPECT_EQ(this->blob_top_->data_at(0, c, 0, 0), + this->blob_bottom_->data_at(0, (c / 15), (c / 5) % 5, c % 5)); + } +} + + +TYPED_TEST(Im2colLayerTest, TestRectGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_kernel_h(5); + convolution_param->set_kernel_w(3); + convolution_param->set_stride(2); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); +} + } // namespace caffe -- 2.7.4