tf.nn.max_pool
的 tensorflow
中的“相同”和“有效”填充有什么区别?
在我看来,“有效”意味着当我们做最大池时,边缘之外不会有零填充。
根据 深度学习卷积算法指南,它说池运算符中不会有填充,即只使用 tensorflow
的“有效”。但是 tensorflow
中最大池的“相同”填充是什么?
原文由 karl_TUM 发布,翻译遵循 CC BY-SA 4.0 许可协议
tf.nn.max_pool
的 tensorflow
中的“相同”和“有效”填充有什么区别?
在我看来,“有效”意味着当我们做最大池时,边缘之外不会有零填充。
根据 深度学习卷积算法指南,它说池运算符中不会有填充,即只使用 tensorflow
的“有效”。但是 tensorflow
中最大池的“相同”填充是什么?
原文由 karl_TUM 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你喜欢 ascii 艺术:
"VALID"
= 无填充: inputs: 1 2 3 4 5 6 7 8 9 10 11 (12 13)
|________________| dropped
|_________________|
"SAME"
= 零填充: pad| |pad
inputs: 0 |1 2 3 4 5 6 7 8 9 10 11 12 13|0 0
|________________|
|_________________|
|________________|
在这个例子中:
笔记:
"VALID"
只删除最右边的列(或最底部的行)。"SAME"
尝试左右均匀填充,但如果要添加的列数是奇数,它将在右侧添加额外的列,如本例中的情况(相同的逻辑适用于垂直:底部可能有一行额外的零)。编辑:
关于名称:
"SAME"
填充,如果您使用步幅 1,则该层的输出将具有与其输入 相同 的空间维度。"VALID"
填充,没有“虚构的”填充输入。该层仅使用 有效 的输入数据。原文由 MiniQuark 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
我将举一个例子使其更清楚:
x
: 形状为 [2, 3] 的输入图像,1 通道valid_pad
:具有 2x2 内核、步幅 2 和 VALID 填充的最大池。same_pad
:具有 2x2 内核、步幅 2 和相同填充的最大池(这是 经典 的方法)输出形状为:
valid_pad
:这里没有填充,所以输出形状是 [1, 1]same_pad
:在这里,我们将图像填充到形状 [2, 4] (使用-inf
然后应用最大池),所以输出形状是 [1, 2]