Python 如何在PyTorch中加载部分训练的模型?

Python 如何在PyTorch中加载部分训练的模型?,python,machine-learning,deep-learning,neural-network,pytorch,Python,Machine Learning,Deep Learning,Neural Network,Pytorch,为了简单起见,假设我加载的模型有4个层(layer0、layer1、layer2、layer3)。如果我只想对模型进行预训练,比如说第0层和第1层,但随机初始化了第2层和第3层的参数,我怎么能做到这一点呢?你可以通过冻结你希望它不改变的层(预训练),而不冻结其他层(它们将继续训练) model\u ft=models.resnet50(pretrained=True) ct=0 对于模型_ft.children()中的子项: ct+=1 如果ct

为了简单起见,假设我加载的模型有4个层(layer0、layer1、layer2、layer3)。如果我只想对模型进行预训练,比如说第0层和第1层,但随机初始化了第2层和第3层的参数,我怎么能做到这一点呢?

你可以通过冻结你希望它不改变的层(预训练),而不冻结其他层(它们将继续训练)

model\u ft=models.resnet50(pretrained=True)
ct=0
对于模型_ft.children()中的子项:
ct+=1
如果ct<7:
对于child.parameters()中的参数:
param.requires_grad=False

这冻结了Resnet50总共10层中的1-6层。

我想我没有解释清楚。我不想冻结图层。我想使用随机初始化对它们进行重新训练。所以我不希望在训练开始时就有预先训练好的重量。不确定这是否有意义。哦,我明白了。您可以在if语句中使用
child.reset_parameters()
,而不是在更改条件后冻结层。我不确定它是否有效,所以告诉我结果。
model_ft = models.resnet50(pretrained=True)
ct = 0
for child in model_ft.children():
    ct += 1
    if ct < 7:
        for param in child.parameters():
            param.requires_grad = False