您的位置:首页 > 理论基础 > 计算机网络

卷积神经网络之padding计算

2020-08-01 17:55 2251 查看

padding的模式分为SAME和VALID两种方式。下面简单介绍一下两种方式输出shape的计算方法。

tensorflow

VALID

计算公式:
输出的大小直接用输入的大小减去卷积核大小,加1,然后除以步长,最后对结果向上取整。
假如输入的shape为7x7的,卷积核的大小为3x3,步长为2,这样计算出的输出shape为:3x3。对于边界上没有取到的数据直接舍弃掉。

SAME

计算公式

第一步,先用输入的大小除以步长,对结果向上取整。得到输出的shape。例如,input shape是7x7,kernel为3x3,stride为2。则输出的shape为:4x4。注意:padding为Same,strides为1的时候,输入与输出的shape是相等的。
第二步,根据输出shape对输入进行padding的操作。继续上一步的例子,7除以2向上取整为4,就需要将输入的shape通过padding扩展到8x8。当padding的数量为奇数的时候,在tensorflow中会在后面多padding一些。

pytorch

pytorch与tensorflow的区别是先指定padding的大小,而不是通过计算output的大小然后推算出padding大小。
这里以一个pytorch的padding函数为例说明。

ZeroPad2d

CLASS torch.nn.ZeroPad2d(padding)
使用0来填充边界。padding输入是一个int类型的tuple。如果是一个值a,则所有边界使用相同的填充,相当于输入(a, a, a, a)。如果是一个大小为4的tuple,例如:(a, b, c, d),则对应到填充的位置为(left,right,top,bottom)。

输入shape(N, C, H_in, W_in)
输出shape(N, C, H_out, W_out)

H_out = H_in + top + bottom
W_out = W_in + left + right

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: