PyTorch1.7.0调用Conv2d传padding='same'报错如何解决?
报错原因
你遇到的报错是因为PyTorch 1.7.0版本不支持为nn.Conv2d的padding参数传入字符串类型值(如'same')。字符串形式的'same'/'valid'padding配置是PyTorch 1.10版本才新增的特性,低于该版本的PyTorch仅支持接收整数或整数元组作为padding参数的输入。
解决方案
有两种可选方案解决该问题:
- 方案一:手动计算padding值替换字符串参数(更推荐,无需改动现有环境依赖)
当卷积步长stride为默认值1时,要实现samepadding的效果(输出特征图尺寸与输入一致),padding数值可按如下规则计算:- 当卷积核为正方形时,
padding = kernel_size // 2 - 当卷积核为矩形(尺寸为
(h, w))时,padding = (h//2, w//2)
你当前代码的kernel_size为2,对应padding值为1,修改后的代码如下:
- 当卷积核为正方形时,
import torch from torch import nn in_channels = 1 out_channels = 3 kernel_size = 2 conv1 = nn.Conv2d(in_channels, out_channels, kernel_size, padding=kernel_size//2)
- 方案二:升级PyTorch版本到1.10及以上
升级后即可直接使用padding='same'的写法,升级命令如下:
pip install torch>=1.10 torchvision>=0.11
如果你的Kaggle环境中其他代码有依赖PyTorch 1.7.0的特性,不推荐使用该方案,避免出现依赖冲突。
内容的提问来源于stack exchange,提问作者d4riush
相关产品推荐
相关产品推荐

