如上所述,
tf.nn.conv2d 使用 strides = 2
和
tf.nn.max_pool 使用 2×2 池化
都能将输入大小减半,我知道它们的输出可能不同,但我不知道这是否会影响最终的训练结果,有什么线索吗,谢谢。
回答:
在你的两个例子中,我们假设应用了一个 [height, width]
的核,并且步长为 [2,2]
。这意味着我们将核应用于输入的 2-D 窗口,大小为 [height, width]
,以获得一个输出值,然后将窗口向上或向下移动 2 个单位以获取下一个输出值。
在两种情况下,如果使用 padding='SAME'
,输出值的数量将是输入值的四分之一(每个维度减少一半)。
两者的区别在于每个窗口的输出值是如何计算的:
conv2d
- 输出是输入值与
[height, width]
核中每个单元的权重相乘的线性组合 - 这些权重成为模型中的可训练参数
max_pool
- 输出只是选择
[height, width]
窗口内输入值的最大值 - 此操作不引入权重和可训练参数