static void getMKLDNNPoolConfig(TestConfig& cfg, const testPoolDesc& pm) { cfg.layerConfig.set_type("mkldnn_pool"); cfg.layerConfig.set_active_type("relu"); cfg.layerConfig.set_size(pm.ic * pm.oh * pm.ow); cfg.inputDefs.push_back( {INPUT_DATA, "layer_0", /* size of input layer= */ size_t(pm.ic * pm.ih * pm.iw), 0}); LayerInputConfig* input = cfg.layerConfig.add_inputs(); PoolConfig* pool = input->mutable_pool_conf(); pool->set_pool_type("avg-projection"); pool->set_channels(pm.ic); pool->set_img_size(pm.iw); pool->set_img_size_y(pm.ih); pool->set_output_x(pm.ow); pool->set_output_y(pm.oh); pool->set_size_x(pm.fw); pool->set_size_y(pm.fh); pool->set_padding(pm.pw); pool->set_padding_y(pm.ph); pool->set_stride(pm.sw); pool->set_stride_y(pm.sh); int oh = outputSize(pm.ih, pm.fh, pm.ph, pm.sh, false); int ow = outputSize(pm.iw, pm.fw, pm.pw, pm.sw, false); CHECK_EQ(ow, pm.ow) << "output size check failed"; CHECK_EQ(oh, pm.oh) << "output size check failed"; }
void testPoolLayer(const testPoolDesc& pm) { TestConfig dnnConfig; getMKLDNNPoolConfig(dnnConfig, pm); LayerInputConfig* input = dnnConfig.layerConfig.mutable_inputs(0); PoolConfig* pool = input->mutable_pool_conf(); for (auto type : {"max-projection", "avg-projection"}) { pool->set_pool_type(type); RUN_MKLDNN_TEST_LAYER(dnnConfig, "pool", pm) } }