【问题标题】:load and freeze one model and train others in PyTorch在 PyTorch 中加载和冻结一个模型并训练其他模型
【发布时间】:2020-11-09 21:54:14
【问题描述】:

我有一个模型 A,它包括三个子模型 model1、model2、model3。

模型流程:model1 --> model2 --> model3

我在一个独立项目中训练了 model1。

问题是在训练模型A时如何使用预训练好的model1?

现在,我尝试如下实现:

我通过`model1.load_state_dict(torch.load(model1.pth))加载model1的checkpoint,然后设置model1参数的requires_grad为False?

对吗?

【问题讨论】:

    标签: python tensorflow pytorch torchvision


    【解决方案1】:

    是的,没错。

    当您按照您解释的方式构建模型时,您所做的就是正确的。

    ModelA 包含三个子模型 - model1、models、model3

    然后您使用model*.load_state_dict(torch.load(model*.pth)) 加载每个模型的权重

    然后为您要冻结的模型制作requires_grad=False

    for param in model*.parameters():
        param.requires_grad = False
    

    您还可以通过访问子模块来冻结特定层的权重,例如,如果您在模型 1 中有一个名为 fc 的层,那么您可以通过设置 model1.fc.weight.requres_grad = False 来冻结其权重。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 2019-07-17
      • 2021-04-05
      • 2017-06-11
      • 2020-06-21
      • 2021-07-16
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多