pytorch版本兼容问题

  • 今天用pytorch1.8跑官方版本Neighbor2Neighbor的时候报了这个错:
TypeError: conv_transpose2d(): argument 'output_padding' (position 6) must be tuple of ints, not tuple
  • 发现问题出在nn.ConvTranspose2d上,代码是这样写的:
self.deconv = nn.ConvTranspose2d(in_nc, out_nc, 2, 2, 0, False)
  • 很奇怪的是,这份代码在pytorch1.4.0的环境下能运行,再更新的版本就不能运行了
  • 说明问题出在了版本兼容上,根据文档,无论是1.4.0还是1.8.0,False的位置对应的都是output padding这个参数,但这个参数要求的输入值应该是int或tuple of int
  • 我一路查到0.4.0的文档,发现一直到这时候参数定义都是这样的:
class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)

这份代码的写法 看上去应该是想把bias设为False,但是明显写错了,在老版本居然能运行,也不知道把False输入到哪个参数中去,是变为0输入到outputpadding中去还是直接输入到bias中去,但是这两者明显具有不同的效应,一个bias是默认值true,一个是false。
现在就很尴尬了,要帮他改正确有两种改法,但是作者的复现结果如果真是按给出的代码来的话,应该就是bias是true,outputpadding是0的方法给出的结果,但作者的意思应该是想写一个bias是False的模块。

你可能感兴趣的:(实用代码,pytorch,深度学习,人工智能)