pytorch优化器注意事项

模型放进优化器注意事项

问题描述:模型权重不更新,但网络权重的grad属性值会变化

解决过程:

检查优化器的实例化代码:

# 为了模型训练稳定,将预训练部分和自己加的随机初始化的模块使用不同的学习率

# 错误写法
optimizer = torch.optim.Adam([{'params':model_stu.original_model.parameters(), 'lr':args.lr,
                              'params':model_stu.semantic_map.parameters(), 'lr':args.lr * 10,
                              'params':model_stu.second_last_lenar.parameters(), 'lr':args.lr * 10},
                             ], weight_decay=args.weight_decay)
# 优化器的初始化一般形式
optimizer = torch.optim.Adam(model.parameters(), lr, weight_decay)
# params:可以是以一个列表或者dict,他定义了参数组的dict
class Adam(
    params: _params_t,
    lr: float = ...,
    betas: Tuple[float, float] = ...,
    eps: float = ...,
    weight_decay: float = ...,
    amsgrad: bool = ...
)

正确写法:应该放进一个列表,列表的元素是一个个字典,而不是列表内是一个字典

# 正确写法
# 应该放进一个列表,列表的元素是一个个字典,字典的必要key是'params'和'lr'
optimizer = torch.optim.Adam([{'params':model_stu.original_model.parameters(), 'lr':args.lr},
                              {'params':model_stu.semantic_map.parameters(), 'lr':args.lr * 10},
                              {'params':model_stu.second_last_lenar.parameters(), 'lr':args.lr * 10},
                             ], weight_decay=args.weight_decay)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大力发展生产力--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值