2024-04-26 13:52:09 发布
网友
我有一个模型a,包括三个子模型model1、model2和model3
模型流:模型1-->;模式2-->;模型3
我在一个独立的项目中培训了model1
问题是在培训模型A时如何使用预先培训的模型1
现在,我试着实现如下:
我通过`model1.load\u state\u dict(torch.load(model1.pth))加载model1的检查点,然后将model1参数的requires\u grad设置为False
是这样吗
是的,没错
当您按照您所解释的方式构建模型时,您所做的是正确的
ModelA由三个子模型组成:model1、models、model3
然后用model*.load_state_dict(torch.load(model*.pth))加载每个模型的权重
model*.load_state_dict(torch.load(model*.pth))
然后为要冻结的模型制作requires_grad=False
requires_grad=False
for param in model*.parameters(): param.requires_grad = False
还可以通过访问子模块来冻结特定层的权重,例如,如果model1中有一个名为fc的层,则可以通过制作model1.fc.weight.requres_grad = False来冻结其权重
fc
model1.fc.weight.requres_grad = False
是的,没错
当您按照您所解释的方式构建模型时,您所做的是正确的
ModelA由三个子模型组成:model1、models、model3
然后用
model*.load_state_dict(torch.load(model*.pth))
加载每个模型的权重然后为要冻结的模型制作
requires_grad=False
还可以通过访问子模块来冻结特定层的权重,例如,如果model1中有一个名为
fc
的层,则可以通过制作model1.fc.weight.requres_grad = False
来冻结其权重相关问题 更多 >
编程相关推荐