pytorch--训练分层学习率设置
在训练模型时,我们经常会使用两个神经网络模型进行融合,若两个模型的复杂度不同,或者激活函数不同,导致训练后的模型训练损失忽高忽低,差距巨大,有可能是陷入了局部最优
的状况。这时候采用分层学习率
的策略可能帮助模型度过局部最优困境。
下面是一个简单的示例:
对于一个继承于nn.Module
的神经网络模型Model
class Model(nn.Module): def __init__(self): super().__init__() self.layer1 = nn.Sequential(nn.Linear(20, 10), nn.Tanh()) self.layer2 = nn.Linear(10, 1) def forward(self, x): out = self.layer1(x) out = self.layer2(out) return out
那么分层学习率的设置大致如下:
model = Model() # 模型初始化 # 设置分层学习率 params_list = [{'params': model.layer1.parameters(), 'lr': 0.001}, {'params': model.layer2.parameters(), 'lr': 0.002}] # 将学习率传入优化器 optimizeer = torch.optim.RMSprop(params_list) # 模型训练 train(model, max_epoch, optimizer, train_iter, vali_iter, test_iter, loss_func)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律