padding参数为 SAME 和 VALID 的区别
https://blog.csdn.net/wuguangbin1230/article/details/79218593
https://blog.csdn.net/jiandanjinxin/article/details/77519629
https://blog.csdn.net/wuzqchom/article/details/74785643
不同的padding方式,VALID是采用丢弃的方式,比如上述的input_width=13,只允许滑动2次,多余的元素全部丢掉 SAME的方式,采用的是补全的方式,对于上述的情况,允许滑动3次,但是需要补3个元素,左奇右偶,在左边补一个0,右边补2个0
In this example:
- Input width = 13
- Filter width = 6
- Stride = 5
-
"VALID"
only ever drops the right-most columns (or bottom-most rows). -
"SAME"
tries to pad evenly left and right, but if the amount of columns to be added is odd, it will add the extra column to the right, as is the case in this example (the same logic applies vertically: there may be an extra row of zeros at the bottom).
The TensorFlow Convolution example gives an overview about the difference betweenSAME
andVALID
:
-
For the
SAME
padding, the output height and width are computed as:out_height = ceil(float(in_height) / float(strides[1]))
out_width = ceil(float(in_width) / float(strides[2]))
And
-
For the
VALID
padding, the output height and width are computed as:out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))
out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
池化:max_pool
I'll give an example to make it clearer:
-
x
: input image of shape [2, 3], 1 channel -
valid_pad
: max pool with 2x2 kernel, stride 2 and VALID padding. -
same_pad
: max pool with 2x2 kernel, stride 2 and SAME padding (this is theclassic way to go)
The output shapes are:
-
valid_pad
: here, no padding so the output shape is [1, 1] -
same_pad
: here, we pad the image to the shape [2, 4] (with-inf
and then apply max pool), so the output shape is [1, 2]
Tensorflow中的定义:
The TensorFlow Convolution example gives an overview about the difference between SAME and VALID :
For the SAME padding, the output height and width are computed as:
out_height = ceil(float(in_height) / float(strides[1]))
out_width = ceil(float(in_width) / float(strides[2]))
And
For the VALID padding, the output height and width are computed as:
out_height = ceil(float(in_height - filter_height + 1) / float(strides1))
out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
备注:
#SAME 向上取整
#VALID 向下取整
输入:n*c0*w0*h0
输出:n*c1*w1*h1
其中,c1就是参数中的num_output,生成的特征图个数
w1=floor((w0+2*pad-kernel_size)/stride)+1;向下取整
h1=floor((h0+2*pad-kernel_size)/stride)+1;向下取整
如果设置stride为1,前后两次卷积部分存在重叠。如果设置pad=(kernel_size-1)/2,则运算后,宽度和高度不变。
由pad, kernel_size和stride三者共同决定。
上一篇: C的printf()相关参数以及用法。
下一篇: systemctl mongod
推荐阅读
-
padding参数为 SAME 和 VALID 的区别
-
PHP中register_globals参数为OFF和ON的区别
-
详解Spring 参数验证@Validated和@Valid的区别
-
PHP中register_globals参数为OFF和ON的区别(register_globals_PHP
-
PHP中register_globals参数为OFF和ON的区别(register_globals
-
register_globals PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
-
参数验证 @Validated 和 @Valid 的区别
-
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
-
PHP中register_globals参数为OFF和ON的区别(register_globals_PHP
-
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)_php技巧