TensorFlow max_pool2d输出大小错误

时间:2017-08-23 12:28:27

标签: tensorflow max-pooling

我尝试使用过滤器大小为2x2的最大池层,所以我希望输出大小大约是输入大小的一半。 输入大小为9x14x64,但由于某种原因,输出大小为7x12x64(请参阅附件TensorBoard graph)。

这是TensorFlow代码:

layer = conv2d(layer, 64, 3, 2, activation_fn=None, scope="conv_2", name=name)
layer = max_pool2d(layer, 2, 1, scope="max_1", name=name)
layer = conv2d(layer, 32, 3, 1, activation_fn=None, scope="conv_3", name=name)

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

看来你是张量流默认的data_format NHWC;但您的输入格式为NCHW。因此,您需要将输入格式更改为NHWC

N -batch_size, H-height, W-width, C-num_channels 

注意:Max-pool仅更改输入要素图的heightwidth。对num_channels没有影响(输入和输出都相同)。

如果您想更改频道数,则可以使用1x1卷积层,如下所示。

# 9 x 14 x 64
layer = max_pool2d(layer, 2, 2, scope="max_1", name=name, padding='SAME')
# output size 5x7x64
# to reduce num_channels use 1x1 conv
layer = conv2d(layer, 32, 1, 1, activation_fn=None, scope="conv_pool", name=name, padding='SAME')
# output size 5x7x32