一、神经网络构造--梯度下降二、调整学习率1、什么是调整学习率常用的学习率有0.1、0.01以及0.001等学习率越大则权重更新越快。一般来说我们希望在训练初期学习率大一些使得网络收敛迅速在训练后期学习率小一些使得网络更好的收敛到最优解。2、如何实现调整学习率1使用库函数进行调整2手动调整学习率3、使用库函数调整Pytorch学习率调整策略通过 torch.optim.lr_sheduler 接口实现。并提供3种调整方法1 有序调整等间隔调整(Step)多间隔调整(MultiStep)指数衰减(Exponential)余弦退火(CosineAnnealing);1.有序调整StepLR(等间隔调整学习率)torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma0.1)参数optimizer: 神经网络训练中使用的优化器如optimizertorch.optim.Adam(…)step_size(int): 学习率下降间隔数单位是epoch而不是iteration.gamma(float):学习率调整倍数默认为0.1每训练step_size个epoch学习率调整为lrlr*gamma.2.有序调整MultiStepLR(多间隔调整学习率)torch.optim.lr_shceduler.MultiStepLR(optimizer, milestones, gamma0.1)参数milestone(list): 一个列表参数表示多个学习率需要调整的epoch值如milestones[10, 30, 80].3.有序调整ExponentialLR (指数衰减调整学习率)torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma)参数gamma(float)学习率调整倍数的底数指数为epoch初始值我lr, 倍数为γepoch4.有序调整CosineAnnealing (余弦退火函数调整学习率)torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min0)参数 Tmax(int):学习率下降到最小值时的epoch数即当epochT_max时学习率下降到余弦函数最小值当epochT_max时学习率将增大etamin: 学习率调整的最小值即epochTmax时lrminetamin, 默认为0.2自适应调整依训练状况伺机而变通过监测某个指标的变化情况(loss、accuracy)当该指标不怎么变化时就是调整学习率的时机(ReduceLROnPlateau); 3自定义调整通过自定义关于epoch的lambda函数调整学习率(LambdaLR)。1.自适应调整ReduceLROnPlateau (根据指标调整学习率)当某指标(loss或accuracy)在最近几个epoch中都没有变化(下降或升高超过给定阈值)时调整学习率。torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, modemin, factor0.1, patience10,verboseFalse, threshold0.0001, threshold_moderel, cooldown0, min_lr0, eps1e-08)2.自定义调整LambdaLR (自定义调整学习率)可以为不同层设置不同的学习率torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda)参数lr_lambda(function or list): 自定义计算学习率调整倍数的函数通常时epoch的函数当有多个参数组时设为list.