计算图
用来描述运算的有向无环图
两个主要元素:结点(Node)和边(Edge)
结点表示数据
边表示运算
用户创建的结点为叶子结点:如这里的x,w
is_leaf: 指示张量是否为叶子结点
autogrod
optimizer
学习率调整
学习率 用于控制更新的步伐
初始学习率的设置:
初始学习率一共两种设置方法:
1)设置较小的学习率:0.01(用在重新训练的时候),0.001, 0.0001(用在fine turn的时候)
2)搜索最大的学习率:观察图可知,左边这幅图,学习率大于0.05时accuracy就下降了,故学习率不大于0.05
_LRScheduler:是学习率的基类
它的主要属性:
optimizer里存放了lr,故需要关联optimizer,然后去改变optimizer里的lr
学习率以epoch为周期
_LRScheduler的主要方法:
1)step():是我们使用的一个接口
2)get_lr:所有_LRScheduler的子类必须overwrite这个方法(get_lr),这里面具体计算学习率
学习率调整的方法:
StepLR
比如:每50步调整一次学习率
MultiStepLR
比如:在第20次迭代时,调整一次学习率;再到102次的时候再调整一次学习率
ReduceLRonPlateau
这个调整策略比较实用:
min模式时,观察loss不再下降(连续多次不再下降),就调整学习率
max模式时,观察accuarcy不再上升(连续多次不再上升),就调整学习率
小结:
使用Lambda自定义调整学习率:
1)不同参数组有不同的学习率
2)fineturning
小小补充: