PyTorch优化器传入重复参数会产生何种训练影响?
关于PyTorch优化器传入重复参数的训练状态分析
直接给结论:每次optimizer.step()会对同一组模型参数执行三次更新操作,这不属于正常训练状态,会严重干扰训练效果。
具体分析:
- PyTorch优化器的工作逻辑是遍历传入的参数列表,对列表里的每一个参数条目单独计算并应用梯度更新。当你把同一组参数重复添加三次后,优化器会把同一个模型参数当成三个独立的参数项处理。
- 以你的示例代码为例:
每次执行model = MyModel() params = list(model.parameters()) + list(model.parameters()) + list(model.parameters()) optimizer = Adam(params)optimizer.step()时,优化器会依次对这三组完全相同的参数(实际指向模型的同一组权重)各做一次Adam更新。 - 这种操作的影响:相当于变相放大了有效学习率(但不是严格的3倍,因为Adam依赖动量和二阶矩的累积统计,重复更新会让这些统计量的计算出现偏差),会导致训练过程不稳定——可能出现收敛速度异常快但后续震荡严重,或者直接出现梯度爆炸/发散的情况,和正常训练的结果差异极大。
内容的提问来源于stack exchange,提问作者Federico Taschin
相关产品推荐
相关产品推荐

