AI智能
改变未来

卷积神经网络之padding计算

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

tensorflow

VALID

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

SAME

计算公式

第一步,先用输入的大小除以步长,对结果向上取整。得到输出的shape。例如,input shape是7×7,kernel为3×3,stride为2。则输出的shape为:4×4。注意:padding为Same,strides为1的时候,输入与输出的shape是相等的。
第二步,根据输出shape对输入进行padding的操作。继续上一步的例子,7除以2向上取整为4,就需要将输入的shape通过padding扩展到8×8。当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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 卷积神经网络之padding计算