shape_data->feature_shape(ofm_feature_shape);
node->annot(std::move(shape_data));
+ // calculate padding height, width
+ int32_t i_height = (output_height - 1) * stride_height + effective_window_height - input_height;
+ int32_t i_width = (output_width - 1) * stride_width + effective_window_width - input_width;
+ uint32_t pad_height = i_height >= 0 ? i_height : 0U;
+ uint32_t pad_width = i_width >= 0 ? i_width : 0U;
+
+ // set padding values
+ node->pad()->top(pad_height / 2);
+ node->pad()->bottom(pad_height - node->pad()->top());
+ node->pad()->left(pad_width / 2);
+ node->pad()->right(pad_width - node->pad()->left());
+
+ // clear annotation PaddingData
+ node->annot<PaddingData>(nullptr);
+
INFO(l) << "Fix AvgPool2D shape = ifm" << ifm_feature_shape << " --> ofm" << ofm_feature_shape;
+ INFO(l) << " pad = " << *node->pad();
return true;
}