在 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'])
我试过这个:
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'])