几种不同的动态调整的函数API
总述
官网地址:ReduceLROnPlateau
以ReduceLROnPlateau为例讲解参数
以最后一个为例,详细介绍:
该方法是PyTorch提供的一种基于验证指标的调整方法。它的原理是:当指标停止改善时,降低学习率。当模型的学习停滞时,训练过程通常会受益于将学习率降低2~10倍。该种调整方法读取一个度量指标,如果在“耐心”期间内没有发现它有所改善,那么就会降低学习率。
下面将一一讲解它的形参:
(1)optimizer:在epoch循环之前定义好的优化器
(2)mode:可选str字符串数据,为min或max。当选择min时,代表当度量指标停止下降时,开始减小学习率;当选择max时,代表当度量指标停止上升时,开始减小学习率。
(3)factor:float类型数据,学习率调整的乘法因子,默认值为0.1。
(4)patience:int类型数据,可容忍的度量指标没有提升的epoch数目,默认为10。举例说明,当其设置为10时,我们可以容忍10个epoch内没有提升,如果在第11个epoch依然没有提升,那么就开始降低学习率。
(5)verbose:bool数据,如果设置为True,输出每一次更新的信息,默认为False。
(6)threshold:float类型数据,衡量新的最佳阈值,仅关注重大变化,默认为0.0001。
(7)threshold_mode:可选str字符串数据,为rel或abs,默认为rel。在rel模式下,如果mode参数为max,则动态阈值(dynamic_threshold)为best*(1+threshold),如果mode参数为min,则动态阈值为best+threshold,如果mode参数为min,则动态阈值为best-threshold。
(8)cooldown:int类型数据,减少lr后恢复正常操作之前要等待的epoch数,默认为0。
(9)min_lr:float或list类型数据,学习率的下界,默认为0。
(10)eps:float类型数据,学习率的最小变化值。如果调整后的学习率和调整前的差距小于eps的话,那么就不做任何调整,默认为1e-8。
其使用案例为:
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1