Python pytorch复制权重仅适用于冒号

Python pytorch复制权重仅适用于冒号,python,pytorch,Python,Pytorch,上面的代码帮助我用resnet 18的预训练权重更新我的reg_resnet模型的权重(从零开始初始化)。但是当我有以下的时候它就不起作用了: resnet18 = models.resnet18(pretrained=True) reg_resnet = resnet_model() for each_param in resnet18.state_dict().keys(): reg_resnet.state_dict()[each_param][:]

上面的代码帮助我用resnet 18的预训练权重更新我的reg_resnet模型的权重(从零开始初始化)。但是当我有以下的时候它就不起作用了:

    resnet18 = models.resnet18(pretrained=True)
    reg_resnet = resnet_model()
    for each_param in resnet18.state_dict().keys():
        reg_resnet.state_dict()[each_param][:] = resnet18.state_dict()[each_param]

为什么添加“[:]”会使它起作用?这在pytorch中有什么作用?

但“但它不起作用”到底是什么意思?给我们看完整的stacktrace。对不起,我没有指定。我的意思是,模型似乎没有正确地获得所有的重量,因为训练损失非常令人担忧。例如,尝试手动检查重量是否过重。代码看起来不错,差异可能来自其他地方,它看起来像是“引用”与“复制值”的差异。
resnet18 = models.resnet18(pretrained=True)
reg_resnet = resnet_model()
for each_param in resnet18.state_dict().keys():
    reg_resnet.state_dict()[each_param] = resnet18.state_dict()[each_param]