在 pytorch 中复制权重时语法无效

invalid syntax when copying weight in pytorch

我试过这个:

model2.down1.maxpool_conv.1.double_conv.0.weight.copy_(state_dict['layer1.0.conv1.weight'])

但我收到以下错误消息:

model2.down1.maxpool_conv.1.double_conv.0.weight.copy_(state_dict['layer1.0.conv1.weight'])
                             ^
SyntaxError: invalid syntax

但我的模型输出显示它有“down1.maxpool_conv.1.double_conv.0.weight

Python 不允许 numbers 成为属性,因此如果您以某种方式创建具有此类属性的对象(只能通过低级函数调用来完成) 您将无法通过点符号访问它们(这就是为什么您会收到无效的语法错误,而不是类似未找到属性的错误)。

您应该改为使用循环中已有的 param 引用并执行复制

for name, param in model2.named_parameters():
  if name == 'down1.maxpool_conv.1.double_conv.0.weight':
     param.copy_(state_dict['layer1.0.conv1.weight'])