tensorflow
的tf.nn.max_pool
中的“SAME”和“VALID”填充有什么区别?
在我看来,“VALID”意味着当我们进行最大池时,边缘之外不会有零填充。
根据A guide to convolution arithmetic for deep learning ,它表示池运算符中不会有填充,即只使用 tensorflow
的“VALID”。
但是 tensorflow
中最大池的“SAME”填充是什么?
最佳答案
如果你喜欢 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 |________________| |_________________| |________________|
在这个例子中:
- 输入宽度 = 13
- 过滤器宽度 = 6
- 步幅 = 5
注意事项:
"VALID"
只删除最右边的列(或最底部的行)。"SAME"
尝试左右均匀填充,但是如果要添加的列数是奇数,它会将额外的列添加到右侧,如本例中的情况(同样的逻辑也适用于垂直方向:底部可能会多出一行零)。
编辑:
关于名字:
- 使用
"SAME"
填充,如果您使用 1 的步幅,图层的输出将具有与其输入相同的空间维度。 - 使用
"VALID"
填充,没有“虚构”的填充输入。该层仅使用有效输入数据。
关于python - tensorflow的tf.nn.max_pool中 'SAME'和 'VALID' padding有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674306/