深入理解tensorflowTensorFlow深度学习-推荐系统-CV-NLP

Tensorflow中的padding操作

2017-04-22  本文已影响253人  WilloLee

转载请注明出处:http://www.jianshu.com/p/fef75002cea2

图示说明


padding操作图示

代码说明


根据tensorflow中的conv2d函数,我们先定义几个基本符号

在Tensorflow中对padding定义了两种取值:VALID、SAME。下面分别就这两种定义进行解释说明。

VALID

new_height = new_width = (W – F + 1) / S  #结果向上取整

含义:new_height为输出矩阵的高度。
说明:VALID方式不会在原有输入矩阵的基础上添加新的值,输出矩阵的大小直接按照公式计算即可。

SAME

new_height = new_width = W / S    #结果向上取整

含义:new_height为输出矩阵的高度。
说明:对W/S的结果向上取整得到W"包含"多少个S。

pad_needed_height = (new_height – 1)  × S + F - W

含义:pad_needed_height为输入矩阵需要补充的高度。
说明:因为new_height是向上取整的结果,所以先-1得到W可以完全包裹住S的块数,之后乘以S得到这些块数的像素点总和,再加上filer的F并减去W,即得到在高度上需要对W补充多少个像素点才能满足new_height的需求。

pad_top = pad_needed_height / 2    #结果取整

含义:pad_top为输入矩阵上方需要添加的高度。
说明:将上一步得到的pad_needed_height除以2作为矩阵上方需要扩充0的像素点数。

pad_bottom = pad_needed_height - pad_top

含义:pad_bottom为输入矩阵下方需要添加的高度。
说明:pad_needed_height减去pad_top的剩余部分补充到矩阵下方。

类似的,在宽度上需要pad的像素数和左右分别添加的像素数分别为

pad_needed_width = (new_width – 1)  × S + F - W
pad_left = pad_needed_width  / 2    #结果取整
pad_right = pad_needed_width – pad_left

源码示例


tensorflow/python/ops/nn_ops.py中关于padding的源码部分

padding源码部分

参考


  1. Tensorflow中卷积的padding操作
  2. TensorFlow 深度学习笔记 卷积神经网络
  3. Tensorflow官方API padding说明
上一篇下一篇

猜你喜欢

热点阅读