python - tensorflow的tf.nn.max_pool中 'SAME'和 'VALID' padding有什么区别?

标签 python tensorflow deep-learning

tensorflowtf.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/

相关文章:

python - 比较多个文本文件,并保存公共(public)值

python - 如何连接预训练的嵌入层和输入层

python - Tensorflow/Keras/BERT 多类文本分类准确率

machine-learning - Tensorflow 训练和验证输入队列分离

machine-learning - 网术: How to reshape a convolution layer of a caffemodel file in caffe?

machine-learning - 如何重置迁移学习的特定层权重?

python - 在 Tastypie 中获取请求参数

python - 要检查 Pandas Dataframe 列是否为 TRUE/FALSE,如果为 TRUE,则检查另一列是否满足条件并生成具有值 PASS/FAIL 的新列

python - 使用点表示法从嵌套的 python 字典中检索值

python - 在 macOS 中安装 virtualenvwrapper 时出现问题