torch.optim是一个用于实现优化算法的包,支持常见的优化算法。本文介绍一下这个包下面的一些常见内容,如optimizer和lr_scheduler的构造和使用。
optimizer
optimizer用于根据已得到的梯度来更新网络参数。
optimizer(优化器)的构造:
构造优化器需要传入一个包含要学习参数的迭代器,此外还有一些学习策略参数如学习率等。
以常用的两个优化器SGD和Adam为例:
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer = optim.Adam([var1, var2], lr=0.0001)
optimizer(优化器)的属性或方法:
optimizer也有state_dict(),其中包含两部分:
- state,是一个保持当前optimizer状态的dict,不同优化器内容不同。
- param_groups ,是一个list,里面有一个dict类型的param_group,param_group这个dict内部又有lr等优化器参数的键值对。
以SGD为例,可通过下面代码查看:
#model define...
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
for var_name in optimizer.state_dict():
print(var_name, "\t", optimizer.state_dict()[var_name])
输出:
Optimizer's state_dict:
state {}
param_groups [{'lr': 0.001, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0, 'nesterov': False, 'params': [4675713712, 4675713784, 4675714000, 4675714072, 4675714216, 4675714288, 4675714432, 4675714504, 4675714648, 4675714720]}]
也可以这样来查看
optimizer=optim.Adam(model.parameters(

本文详细介绍PyTorch中的优化器(optimizer)和学习率调度器(lr_scheduler),包括SGD和Adam等常见优化算法的使用方法及参数配置。同时介绍了如何根据不同层设置不同的学习率,并展示了如何在训练过程中调整学习率。
最低0.47元/天 解锁文章
8945

被折叠的 条评论
为什么被折叠?



