探索不同学习率对训练精度和Loss的影响

简介: 探索不同学习率对训练精度和Loss的影响

验证精度、验证Loss的影响

1 问题

在探索mnist数据集过程中,学习率的不同,对我们的实验结果,各种参数数值的改变有何变化,有何不同。

学习率对精度和损失的影响研究。

训练周期=100

学习率= [0.1, 0.01, 0.001, 0.0001]

(1) 不同学习率下的训练精度曲线;

(2) 不同学习率下的训练Loss曲线;

(3) 不同学习率下的验证精度曲线;

(4) 不同学习率下的验证Loss曲线;


2 方法

在前面的学习过程中,我们已经完成了固定学习率lr=0.001情况下,训练精度,验证精度,训练loss,验证loss的结果,所以说我们只需要加一个循环,通过遍历学习率列表:lrs = [0.1, 0.01, 0.001, 0.0001],用列表来保存数据结果就行,在最后通过可视化matlibplot,来展示结果。

新增的代码(学习率的遍历,画图):

lrs = [0.1, 0.01, 0.001, 0.0001]
for i in range(len(lrs)):
   optimizer=torch.optim.SGD(net.parameters(), lr=lrs[i],momentum=0.5)
lens = len(Train_Acc_list)
b = int(lens/4)

plt.subplot(2,2,1)
plt.plot(list(range(1,101)), Train_Acc_list[:b], color='red')
plt.plot(list(range(1,101)),Train_Acc_list[b:2*b],color='blue')
plt.plot(list(range(1,101)), Train_Acc_list[2*b:3*b], color='yellow')
plt.plot(list(range(1,101)), Train_Acc_list[3*b:], color='green')
plt.xlabel('epoch',size=18)
plt.ylabel('Accuracy',size=18)
plt.title('不同学习率下的训练精度曲线',size=20)
plt.legend(labels=['lr=0.1','lr=0.01','lr=0.001','lr=0.0001'])

plt.subplot(2, 2, 2)
plt.plot(list(range(1, 101)), Train_loss_list[:b], color='red')
plt.plot(list(range(1, 101)), Train_loss_list[b:2 * b], color='blue')
plt.plot(list(range(1, 101)), Train_loss_list[2 * b:3 * b], color='yellow')
plt.plot(list(range(1, 101)), Train_loss_list[3 * b:], color='green')
plt.xlabel('epoch', size=18)
plt.ylabel('Loss', size=18)
plt.title('不同学习率下的训练Loss曲线', size=20)
plt.legend(labels=['lr=0.1', 'lr=0.01', 'lr=0.001', 'lr=0.0001'])

plt.subplot(2, 2, 3)
plt.plot(list(range(1, 101)), Val_Acc_list[:b], color='red')
plt.plot(list(range(1, 101)), Val_Acc_list[b:2 * b], color='blue')
plt.plot(list(range(1, 101)), Val_Acc_list[2 * b:3 * b], color='yellow')
plt.plot(list(range(1, 101)), Val_Acc_list[3 * b:], color='green')
plt.xlabel('epoch', size=18)
plt.ylabel('Accuracy', size=18)
plt.title('不同学习率下的验证精度曲线', size=20)
plt.legend(labels=['lr=0.1', 'lr=0.01', 'lr=0.001', 'lr=0.0001'])

plt.subplot(2, 2, 4)
plt.plot(list(range(1, 101)), Val_loss_list[:b], color='red')
plt.plot(list(range(1, 101)), Val_loss_list[b:2 * b], color='blue')
plt.plot(list(range(1, 101)), Val_loss_list[2 * b:3 * b], color='yellow')
plt.plot(list(range(1, 101)), Val_loss_list[3 * b:], color='green')
plt.xlabel('epoch', size=18)
plt.ylabel('Loss', size=18)
plt.title('不同学习率下的验证Loss曲线', size=20)
plt.legend(labels=['lr=0.1', 'lr=0.01', 'lr=0.001', 'lr=0.0001'])

plt.show()
plt.savefig('pic.svg')

运行结果图:

3 结语

根据最后的可视化展示图可以清晰地看到:

  1. 在学习率为0.1的时候,相较于学习率为0.01、0.001、0.0001,训练精度都是较差的,特别是在训练次数相对于较少时,而且在第二张训练Loss曲线中,训练次数较少时, Loss较大,在第三张图也能明显看出,验证精度曲线,学习率为0.1的曲线变化较大,且精度不是很高,在第四张图上,Loss变化较大,且基本比其他三条线高
  2. 从第一张图上来看,学习率为0.01、0.001、0.0001时,精度基本上维持在94%左右,第二张图来看,Loss也基本相差不大。
    在第三张图上的验证精度曲线,学习率为0.0001情况下,随着训练次数的增加,精度基本不变,训练精度为0.001情况下,精度随训练次数的增加有少浮的上下移动。
    在第四张图上来看,学习率为0.001、0.0001情况下,验证Loss随训练次数的变化,基本保存一致。
  3. 综上所述,学习率为0.001、0.0001的情况下,各项指标的精度较高,Loss较低,更加稳定。
目录
相关文章
|
调度 算法框架/工具
Keras 学习率调整
Keras 学习率调整
492 0
|
3月前
|
机器学习/深度学习
【机器学习】准确率、精确率、召回率、误报率、漏报率概念及公式
机器学习评估指标中的准确率、精确率、召回率、误报率和漏报率等概念,并给出了这些指标的计算公式。
590 0
|
3月前
|
TensorFlow 算法框架/工具
【Tensorflow+Keras】学习率指数、分段、逆时间、多项式衰减及自定义学习率衰减的完整实例
使用Tensorflow和Keras实现学习率衰减的完整实例,包括指数衰减、分段常数衰减、多项式衰减、逆时间衰减以及如何通过callbacks自定义学习率衰减策略。
63 0
|
6月前
|
存储 人工智能 自然语言处理
DeepSparse: 通过剪枝和稀疏预训练,在不损失精度的情况下减少70%的模型大小,提升三倍速度
该论文提出了一种新方法,用于创建高稀疏性大型语言模型,通过稀疏预训练和高效部署,在保持高准确度的同时显著提升处理速度。方法包括结合SparseGPT剪枝和稀疏预训练,实现70%稀疏度下准确率完全恢复,尤其适合复杂任务。实验显示,使用Cerebras CS-3 AI加速器和Neural Magic的DeepSparse、nm-vllm引擎,训练和推理速度有显著提升。此外,量化稀疏模型在CPU上速度提升可达8.6倍。这种方法优于传统剪枝,为构建更快、更小的语言模型提供了新途径,并通过开源代码和模型促进了研究复现和扩展。
111 3
|
4月前
|
机器学习/深度学习 索引 Python
。这不仅可以减少过拟合的风险,还可以提高模型的准确性、降低计算成本,并帮助理解数据背后的真正含义。`sklearn.feature_selection`模块提供了多种特征选择方法,其中`SelectKBest`是一个元变换器,可以与任何评分函数一起使用来选择数据集中K个最好的特征。
。这不仅可以减少过拟合的风险,还可以提高模型的准确性、降低计算成本,并帮助理解数据背后的真正含义。`sklearn.feature_selection`模块提供了多种特征选择方法,其中`SelectKBest`是一个元变换器,可以与任何评分函数一起使用来选择数据集中K个最好的特征。
|
5月前
|
机器学习/深度学习
YOLOv8的多分类模型如何计算准确率(Accuracy)、精确率(Precision)、召回率(recall)和F1-Score模型评估参数
YOLOv8的多分类模型如何计算准确率(Accuracy)、精确率(Precision)、召回率(recall)和F1-Score模型评估参数
YOLOv3的NMS参数调整对模型的准确率和召回率分别有什么影响?
YOLOv3的NMS参数调整对模型的准确率和召回率分别有什么影响?
|
6月前
|
算法 数据挖掘
WINBUGS对随机波动率模型进行贝叶斯估计与比较
WINBUGS对随机波动率模型进行贝叶斯估计与比较
|
6月前
|
机器学习/深度学习 数据可视化 算法
R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用
R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用
|
数据可视化 计算机视觉
深入了解平均精度(mAP):通过精确率-召回率曲线评估目标检测性能
平均精度(Average Precision,mAP)是一种常用的用于评估目标检测模型性能的指标。在目标检测任务中,模型需要识别图像中的不同目标,并返回它们的边界框(bounding box)和类别。mAP用于综合考虑模型在不同类别上的准确度和召回率。
1026 0