那为什么要重写optimizer和scheduler呢,如下所示:
然后在训练的时候调用
当然是因为想要实现更多的功能,比如:
1.在迁移学习时需要冻结部分网络层的参数,
这一句就可以选择只给requires_grad=TRUE的参数设置优化器
2.很多参数希望用更方便的argparse传入,那就需要把可选的优化器、对应的初始化参数、学习策略相关参数等等,用args.*的形式设置为选项。自然需要重新一个函数进行包装。
管理并更新模型中可学习参数的值, 使得模型输出更接近真实标签。
优化器里面的基本方法:
在学习学习率调整策略之前,得先学习一个基类_LRScheduler, 因为后面的六种学习率调整策略都是继承于这个类的,所以得先明白这个类的原理:
主要属性:
主要方法:
pytorch的六种学习率调整策略小结一下:
我们需要先知道一个复杂函数中的核心语句,其次是对它进行重写包装的目的。