本文首发自【简书】用户【西北小生_】的博客,未经允许,禁止转载!
PyTorch二维卷积函数 torch.nn.Conv2d() 有一个“padding_mode”的参数,可选项有4种:'zeros', 'reflect',
'replicate' or 'circular',其默认选项为'zeros',也就是零填充。这四种填充方式到底是怎么回事呢?
padding_mode (string, optional): `'zeros'`, `'reflect'`,
`'replicate'` or `'circular'`. Default: `'zeros'`
为了直观的观察这4种填充方式,我们定义一个1*1卷积,并将卷积核权重设置为1,这样在进行不同填充方式的卷积计算后,我们即可得到填充后的矩阵。本例中我们生成一个由1~16组成的4*4矩阵,对其进行不同填充方式的卷积计算。
# 定义一个由1~16组成的高和宽维度为4*4的矩阵作为卷积输入,由于2维卷积只能处理4维的输入,故增加两个维度
In [51]: x = torch.nn.Parameter(torch.reshape(torch.range(1,16),(1,1,4,4)))
# 查看定义的输入
In [52]: x
Out[52]:
Parameter containing:
tensor([[[[ 1., 2., 3., 4.],
[ 5., 6., 7