Test for 3x 2 rectangular pooling layer with kernel_h > kernel_w
| 119 | } |
| 120 | // Test for 3x 2 rectangular pooling layer with kernel_h > kernel_w |
| 121 | void TestForwardRectHigh() { |
| 122 | LayerParameter layer_param; |
| 123 | PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); |
| 124 | pooling_param->set_kernel_h(3); |
| 125 | pooling_param->set_kernel_w(2); |
| 126 | pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); |
| 127 | const int num = 2; |
| 128 | const int channels = 2; |
| 129 | blob_bottom_->Reshape(num, channels, 6, 6); |
| 130 | // Input: 2x 2 channels of: |
| 131 | // [35 1 6 26 19 24] |
| 132 | // [ 3 32 7 21 23 25] |
| 133 | // [31 9 2 22 27 20] |
| 134 | // [ 8 28 33 17 10 15] |
| 135 | // [30 5 34 12 14 16] |
| 136 | // [ 4 36 29 13 18 11] |
| 137 | // (this is generated by magic(6) in MATLAB) |
| 138 | for (int i = 0; i < 36 * num * channels; i += 36) { |
| 139 | blob_bottom_->mutable_cpu_data()[i + 0] = 35; |
| 140 | blob_bottom_->mutable_cpu_data()[i + 1] = 1; |
| 141 | blob_bottom_->mutable_cpu_data()[i + 2] = 6; |
| 142 | blob_bottom_->mutable_cpu_data()[i + 3] = 26; |
| 143 | blob_bottom_->mutable_cpu_data()[i + 4] = 19; |
| 144 | blob_bottom_->mutable_cpu_data()[i + 5] = 24; |
| 145 | blob_bottom_->mutable_cpu_data()[i + 6] = 3; |
| 146 | blob_bottom_->mutable_cpu_data()[i + 7] = 32; |
| 147 | blob_bottom_->mutable_cpu_data()[i + 8] = 7; |
| 148 | blob_bottom_->mutable_cpu_data()[i + 9] = 21; |
| 149 | blob_bottom_->mutable_cpu_data()[i + 10] = 23; |
| 150 | blob_bottom_->mutable_cpu_data()[i + 11] = 25; |
| 151 | blob_bottom_->mutable_cpu_data()[i + 12] = 31; |
| 152 | blob_bottom_->mutable_cpu_data()[i + 13] = 9; |
| 153 | blob_bottom_->mutable_cpu_data()[i + 14] = 2; |
| 154 | blob_bottom_->mutable_cpu_data()[i + 15] = 22; |
| 155 | blob_bottom_->mutable_cpu_data()[i + 16] = 27; |
| 156 | blob_bottom_->mutable_cpu_data()[i + 17] = 20; |
| 157 | blob_bottom_->mutable_cpu_data()[i + 18] = 8; |
| 158 | blob_bottom_->mutable_cpu_data()[i + 19] = 28; |
| 159 | blob_bottom_->mutable_cpu_data()[i + 20] = 33; |
| 160 | blob_bottom_->mutable_cpu_data()[i + 21] = 17; |
| 161 | blob_bottom_->mutable_cpu_data()[i + 22] = 10; |
| 162 | blob_bottom_->mutable_cpu_data()[i + 23] = 15; |
| 163 | blob_bottom_->mutable_cpu_data()[i + 24] = 30; |
| 164 | blob_bottom_->mutable_cpu_data()[i + 25] = 5; |
| 165 | blob_bottom_->mutable_cpu_data()[i + 26] = 34; |
| 166 | blob_bottom_->mutable_cpu_data()[i + 27] = 12; |
| 167 | blob_bottom_->mutable_cpu_data()[i + 28] = 14; |
| 168 | blob_bottom_->mutable_cpu_data()[i + 29] = 16; |
| 169 | blob_bottom_->mutable_cpu_data()[i + 30] = 4; |
| 170 | blob_bottom_->mutable_cpu_data()[i + 31] = 36; |
| 171 | blob_bottom_->mutable_cpu_data()[i + 32] = 29; |
| 172 | blob_bottom_->mutable_cpu_data()[i + 33] = 13; |
| 173 | blob_bottom_->mutable_cpu_data()[i + 34] = 18; |
| 174 | blob_bottom_->mutable_cpu_data()[i + 35] = 11; |
| 175 | } |
| 176 | PoolingLayer<Dtype> layer(layer_param); |
| 177 | layer.SetUp(blob_bottom_vec_, blob_top_vec_); |
| 178 | EXPECT_EQ(blob_top_->num(), num); |