代码之家  ›  专栏  ›  技术社区  ›  user836026

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

  •  0
  • user836026  · 技术社区  · 2 年前

    我试过这个:

    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
    

    但我的模型输出显示它有“ 下降1。maxpool_conv.1。双转换。重量 "

    enter image description here

    1 回复  |  直到 2 年前
        1
  •  1
  •   lejlot    2 年前

    Python不允许 数字 因此,如果您以某种方式创建了一个具有此类属性的对象(只能通过低级函数调用来实现),您将无法通过点表示法访问这些属性(这就是为什么会出现无效语法错误,而不是类似于Attribute not found error的错误)。

    你应该选择 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'])