输入图像大小CNN Tensorflow

时间:2018-05-23 21:16:48

标签: image tensorflow convolutional-neural-network

我正在为我的CNN提供2048x2048的图像尺寸。但是我偶然忘记改变输入的大小:

img_width, img_height = 32, 32
input_shape = (3, img_width, img_height)

我想知道为什么即使输入图像大于32x32像素,训练仍然会运行?或者CNN只能识别部分图像吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

卷积层的大多数实现都可以在任何大小的图像上运行。对于padding="SAME"的2D卷积,任何卷积层的输出大小都是[batch_size, input_height // stride[0], input_width // stride[1], filters](有效填充只意味着每个边界上丢失一些像素,具体取决于内核大小)。

同样,内核中涉及的权重数量为filters_in * filters_out * np.prod(kernel_size),与输入大小无关(偏差仅为filters_out)。

要执行分类等任务,大多数CNN在末尾使用空间池层(例如tf.reduce_mean(features, axis=(1, 2))),无论输入大小如何,都会将任何输入图像批处理的输出减少到[batch_size, n_filters_out],通过一些密集的层来回归到logits。