Test for rectangular pooling layer with kernel_w > kernel_h
| 244 | } |
| 245 | // Test for rectangular pooling layer with kernel_w > kernel_h |
| 246 | void TestForwardRectWide() { |
| 247 | LayerParameter layer_param; |
| 248 | PoolingParameter* pooling_param = layer_param.mutable_pooling_param(); |
| 249 | pooling_param->set_kernel_h(2); |
| 250 | pooling_param->set_kernel_w(3); |
| 251 | pooling_param->set_pool(PoolingParameter_PoolMethod_MAX); |
| 252 | const int num = 2; |
| 253 | const int channels = 2; |
| 254 | blob_bottom_->Reshape(num, channels, 6, 6); |
| 255 | // Input: 2x 2 channels of: |
| 256 | // [35 1 6 26 19 24] |
| 257 | // [ 3 32 7 21 23 25] |
| 258 | // [31 9 2 22 27 20] |
| 259 | // [ 8 28 33 17 10 15] |
| 260 | // [30 5 34 12 14 16] |
| 261 | // [ 4 36 29 13 18 11] |
| 262 | // (this is generated by magic(6) in MATLAB) |
| 263 | for (int i = 0; i < 36 * num * channels; i += 36) { |
| 264 | blob_bottom_->mutable_cpu_data()[i + 0] = 35; |
| 265 | blob_bottom_->mutable_cpu_data()[i + 1] = 1; |
| 266 | blob_bottom_->mutable_cpu_data()[i + 2] = 6; |
| 267 | blob_bottom_->mutable_cpu_data()[i + 3] = 26; |
| 268 | blob_bottom_->mutable_cpu_data()[i + 4] = 19; |
| 269 | blob_bottom_->mutable_cpu_data()[i + 5] = 24; |
| 270 | blob_bottom_->mutable_cpu_data()[i + 6] = 3; |
| 271 | blob_bottom_->mutable_cpu_data()[i + 7] = 32; |
| 272 | blob_bottom_->mutable_cpu_data()[i + 8] = 7; |
| 273 | blob_bottom_->mutable_cpu_data()[i + 9] = 21; |
| 274 | blob_bottom_->mutable_cpu_data()[i + 10] = 23; |
| 275 | blob_bottom_->mutable_cpu_data()[i + 11] = 25; |
| 276 | blob_bottom_->mutable_cpu_data()[i + 12] = 31; |
| 277 | blob_bottom_->mutable_cpu_data()[i + 13] = 9; |
| 278 | blob_bottom_->mutable_cpu_data()[i + 14] = 2; |
| 279 | blob_bottom_->mutable_cpu_data()[i + 15] = 22; |
| 280 | blob_bottom_->mutable_cpu_data()[i + 16] = 27; |
| 281 | blob_bottom_->mutable_cpu_data()[i + 17] = 20; |
| 282 | blob_bottom_->mutable_cpu_data()[i + 18] = 8; |
| 283 | blob_bottom_->mutable_cpu_data()[i + 19] = 28; |
| 284 | blob_bottom_->mutable_cpu_data()[i + 20] = 33; |
| 285 | blob_bottom_->mutable_cpu_data()[i + 21] = 17; |
| 286 | blob_bottom_->mutable_cpu_data()[i + 22] = 10; |
| 287 | blob_bottom_->mutable_cpu_data()[i + 23] = 15; |
| 288 | blob_bottom_->mutable_cpu_data()[i + 24] = 30; |
| 289 | blob_bottom_->mutable_cpu_data()[i + 25] = 5; |
| 290 | blob_bottom_->mutable_cpu_data()[i + 26] = 34; |
| 291 | blob_bottom_->mutable_cpu_data()[i + 27] = 12; |
| 292 | blob_bottom_->mutable_cpu_data()[i + 28] = 14; |
| 293 | blob_bottom_->mutable_cpu_data()[i + 29] = 16; |
| 294 | blob_bottom_->mutable_cpu_data()[i + 30] = 4; |
| 295 | blob_bottom_->mutable_cpu_data()[i + 31] = 36; |
| 296 | blob_bottom_->mutable_cpu_data()[i + 32] = 29; |
| 297 | blob_bottom_->mutable_cpu_data()[i + 33] = 13; |
| 298 | blob_bottom_->mutable_cpu_data()[i + 34] = 18; |
| 299 | blob_bottom_->mutable_cpu_data()[i + 35] = 11; |
| 300 | } |
| 301 | PoolingLayer<Dtype> layer(layer_param); |
| 302 | layer.SetUp(blob_bottom_vec_, blob_top_vec_); |
| 303 | EXPECT_EQ(blob_top_->num(), num); |