为什么tensorflow的max_pooling2d需要输入等级4?

时间:2017-06-16 16:00:28

标签: python tensorflow

我有形状[batch_size, x, y]的数据,我想通过最大池层来传递它,以便在x和y平面中汇集2D部分,为我留下每个元素的最大值向量的2D矩阵的batch_size。但张量流layers.max_pooling2d要求输入有4个维度。围绕这个的唯一方法是扩展每个示例的维度以具有“虚拟”第四维度?因为这样做会在我的模型中导致问题。

1 个答案:

答案 0 :(得分:1)

最大池化层用于与二维图像一起使用,但具有一定数量的通道。这就是为什么the documentation表示如果data_format是NHWC则输入形状为“[batch_size, height, width, channels]”,如果data_format为NCHW则输入形状为[batch_size, channels, height, width]

典型的3通道图像中的通道将是4通道图像中的红色,蓝色和绿色分量,或红色,绿色,蓝色和alpha。在这种情况下,您可能只需要扩展维度并使用单个通道(或者如果您打算使用多个通道,则重新访问数据处理管道)。

显然,max-pooling比仅仅用于图像更通用,但我相信在图像处理中已经完成了很多工作,因此界面可能是常见用例的工件。

如果您需要在使用最大合并图层后删除额外尺寸,只需重新整形数据。