如何利用PyTorch的padding=SAME参数实现有效填充?
- 内容介绍
- 文章标签
- 相关推荐
本文共计531个文字,预计阅读时间需要3分钟。
在TensorFlow中,`conv2`操作具有`padding='SAME'`参数。吴恩达在授课中提到,当`padding=(f-1)/2`(其中`f`为卷积核大小)时,这是`SAME`策略的实现。但这种情况并未考虑空卷积和步长的情况。查阅资料了解更多。
tensorflow中的conv2有padding=‘SAME'这个参数。吴恩达讲课中说到当padding=(f-1)/2(f为卷积核大小)时则是SAME策略。但是这个没有考虑到空洞卷积的情况,也没有考虑到strides的情况。
查阅资料后发现网上方法比较麻烦。
手算,实验了一个早上,终于初步解决了问题。
分为两步:
填充多少
中文文档中有计算公式:
输入:
输出:
因为卷积后图片大小同卷积前,所以这里W_out=W_in, H_out=H_in。解一元一次方程即可。结果取ceil。
怎么填充
torch是先填充再卷积。conv2d的策略如此。所以我先在forward中获取上述方程需要的参数。然后使用torch.nn.functional.pad填充就好了。
本文共计531个文字,预计阅读时间需要3分钟。
在TensorFlow中,`conv2`操作具有`padding='SAME'`参数。吴恩达在授课中提到,当`padding=(f-1)/2`(其中`f`为卷积核大小)时,这是`SAME`策略的实现。但这种情况并未考虑空卷积和步长的情况。查阅资料了解更多。
tensorflow中的conv2有padding=‘SAME'这个参数。吴恩达讲课中说到当padding=(f-1)/2(f为卷积核大小)时则是SAME策略。但是这个没有考虑到空洞卷积的情况,也没有考虑到strides的情况。
查阅资料后发现网上方法比较麻烦。
手算,实验了一个早上,终于初步解决了问题。
分为两步:
填充多少
中文文档中有计算公式:
输入:
输出:
因为卷积后图片大小同卷积前,所以这里W_out=W_in, H_out=H_in。解一元一次方程即可。结果取ceil。
怎么填充
torch是先填充再卷积。conv2d的策略如此。所以我先在forward中获取上述方程需要的参数。然后使用torch.nn.functional.pad填充就好了。

