我尝试使用过滤器大小为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)
我错过了什么吗?
答案 0 :(得分:0)
看来你是张量流默认的data_format NHWC
;但您的输入格式为NCHW
。因此,您需要将输入格式更改为NHWC
N -batch_size, H-height, W-width, C-num_channels
注意:Max-pool仅更改输入要素图的height
和width
。对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