【无标题】

转自 :神经网络同时优化两个模型的参数/加载两个模型的参数_吉良的博客-CSDN博客_pytorch同时优化两个模型

神经网络同时优化两个模型的参数/加载两个模型的参数
框架:Pytorch
以Adam为例

一、传参和优化
1、传入/优化一个模型的参数:
opt= torch.optim.Adam(model_1.parameters)
1
2、同时传入/优化两个模型的参数:
opt = torch.optim.Adam([
    {'params': model_1.parameters(), 'lr': 0.001,}, 
    {'params': model_2.parameters()},
    ])
1
2
3
4
3、形式2两个模型具有相同的其他参数(如 lr 等),若要设置不同的参数,可以分别在字典中给出
opt = torch.optim.Adam([
    {'params': model_1.parameters(), 'lr': 0.002}, 
    {'params': model_2.parameters(), 'lr': 0.003}
    ])
    # 除lr以外的其他参数都可以采用同样方式给出
1
2
3
4
5
二、保存和加载
1、同一文件中保存多个模型的参数
1.1、保存单个模型

# 保存整个模型
save_name = 'models.pth'
torch.save(model_1, save_name)

# 仅保存参数
save_name = 'models.pt'
torch.save(model_1.state_dict(), save_name)
1
2
3
4
5
6
7
1.2、保存多个模型

# 整体保存
save_name = 'models.pth'
save_model = {
    'model_1': model_1,
    'model_2': model_2,
}
torch.save(save_model, save_name)

# 仅保存多个模型中的参数
save_name = 'models.pt'
save_model = {
    'model_1': model_1.state_dict(),
    'model_2': model_2.state_dict(),
}
torch.save(save_model, save_name)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2、从一个文件中加载多个模型的参数
2.1、加载单个模型(参数)

# 加载整个模型
save_name = 'models.pth'
model_1 = torch.load(save_name)

# 仅加载参数
save_name = 'models.pt'
model_1 = Net_1()    # 实例化模型
model_1.load_state_dict(torch.load(save_name))
1
2
3
4
5
6
7
8
2.2、加载多个模型(参数)

# 整体加载
save_name = 'models.pth'
load_models = torch.load(save_name)
model_1 = load_models['model_1']
model_2 = load_models['model_2']

# 仅加载多个模型中的参数
save_name = 'models.pt'
load_models = torch.load(save_name)
model_1 = Net_1()    # 实例化模型
model_2 = Net_2()    # 实例化模型
model_1.load_state_dict(load_models['model_1'])
model_2.load_state_dict(load_models['model_2'])
1
2
3
4
5
6
7
8
9
10
11
12
13
说明:整个模型和仅参数的区别:
整个模型:是保存整个网络结构和参数,使用时会加载结构和其中的参数;
仅参数:仅保存网络模型中的参数,在使用时需要先用训练时的模型实例化,再往里面填入参数。
举个栗子:
加载整个模型就是边搭框架边填充参数;仅参数需要先搭好框架(先实例化)再往框架里填参数
————————————————
版权声明:本文为CSDN博主「Jiliang.Li」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/leiduifan6944/article/details/103757417

上一篇:测试面试题目总结


下一篇:自然语言处理(二十七):迁移学习