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

news2024/11/25 20:49:07

验证精度、验证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')

运行结果图:

e3185715d4f1bf1e3843dde937a64f92.png

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较低,更加稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙网关Gateway_数据采集,连接控制,室内定位VDB2602

蓝牙网关,内部集成了WiFi、蓝牙、4G等多种无线通信方式,因此也继承了蓝牙、WiFi的有扫描功能、连接功能、数据透传功能,被应用于智能家居的各种场景中,例如:远程控制BLE装置,接收BLE设备发送的数据&#xf…

线程的创建和使用(一)

1、线程 1.1、线程的概念 一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行着多份代码. 1.2、创建线程 方法一:继承Thread类 public class Exe_01 {public static void main(String[] args…

pandas与pyspark计算效率对比

日常工作中,主要还是应用HQL和SparkSQL,数据量大,分布式计算很快; 本地数据处理,一般会使用python的pandas包,api丰富,写法比较简单,但只能利用单核性能跑数,数据量大可…

【MySQL入门】-- 数据库简单的SELECT语句详解

目录 1.SQL分类 2.注释 3.数据导入指令 4.基本的SELECT语句 5.列的别名 6.去重复行 7.显示表结构 8.一些数据库基本操作 1.SQL分类 SQL语言在功能上主要分为三大类: DDL(Data Defintion Language)数据定义语言:定义不同的数据库,表…

【C#】并行编程实战:任务并行性(中)

本章继续介绍任务并行性,因篇幅所限,本章为中篇。 4、取消任务 .NET Framework 提供了以下两个类来支持任务取消: CancellationTokenSource :此类负责创建取消令牌,并将取消请求传递给通过源创建的所有令牌。 Cancell…

关于xinput1_3.dll丢失的详细解决方法

xinput1_3.dll是电脑文件中的dll文件(动态链接库文件)。如果计算机中丢失了某个dll文件,可能会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错。 在我们打开软件或者游戏的时候,电脑提示xinput1_…

8、共享模型之工具

目录 8.1 线程池2、ThreadPoolExecutor(及其重要)1) 线程池状态2) 构造方法3) newFixedThreadPool4) newCachedThreadPool5) newSingleThreadExecutor6) 提交任务7) 关闭线程池8) 任务调度线程池 8.1 线程池 2、ThreadPoolExecutor(及其重要…

中国电子学会2023年05月份青少年软件编程Python等级考试试卷六级真题(含答案)

2023-05 Python六级真题 分数:100 题数:38 测试时长:60min 一、单选题(共25题,共50分) 1. 明明每天坚持背英语单词,他建立了英语单词错题本文件“mistakes.txt”,将每天记错的单词增加到该文件中&…

DuiLib的编译和运行

文章目录 1、原生DuiLib的编译和运行1.1、下载并解压成这个样子1.2、打开.sln解决方案文件1.3、编译成功 2、网易DuiLib编译和运行2.1、下载并解压成这个样子2.2、打开.sln解决方案文件2.3、编译成功 3、腾讯DuiLib编译和运行vs 20173.1、下载并解压成这个样子3.2、打开.sln解决…

使用 Node.js、K8s 和分布式 SQL 构建世界上最具弹性的待办事项列表应用程序

本文演示了如何使用 Kubernetes (K8s) 和分布式 SQL 构建云原生 Node.js 应用程序。 开发可扩展且可靠的应用程序是一项热爱的工作。一个云原生系统可能包括单元测试、集成测试、构建测试,以及用于构建和部署应用程序的完整管道,只需单击一个按钮即可。 …

【计算机网络】第二章应用层-电子科技大学2023期末考试

第二章 应用层 应用层协议原理 网络应用程序体系结构 客户机/服务器体系结构:至少有一个服务器,一个客户机,其中服务器总是打开的,具有固定的众所周知的IP地址,主机群集常被用于创建强大的虚拟服务器,而客…

【Trino实战】Trino下ORC与Parquet查询性能分析

Trino下ORC与Parquet查询性能分析 环境 OS:CentOS 6.5 JDK:1.8 内存:256G 磁盘:HDD CPU:Dual 8-core Intel Xeon CPU (32 Hyper-Threads) E5-2630 v3 2.40GHz HDFS:2.9.2 Hive:2.3.9 T…

[n00bzCTF 2023] CPR 全

Crypto AES 给了java的加密原码,AES加密,有key import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import java.n…

arima模型原理及实战

目录 1,概念 2,数学知识 3,前提条件 4,序列不平稳时的平稳性方法 5,模型定阶,确定P和Q 6,模型训练与检验 1,概念 ARIMA模型(英语:Autoregressive Integr…

grep及文本处理命令

正则表达式 一.基础命令 1.grep命令 对文本的内容进行过滤,针对行处理 1.1grep格式 grep [选项]…查找条件 目标文件 1.2grep命令选项 -m数字——————匹配几次后停止eg:grep -m 1 root /etc/passwd————————————多个匹配只取 -v …

【编程语言 · C语言 · 递归函数】

递归函数 C 语言的函数都支持递归, 也就是说,每个函数都可以直接或者间接第调用自己。所谓的间接调用,是指在递归函数调用的下层函数中再调用自己。 递归关系图如下: 递归之所以能实现,是因为函数的每个执行过程在栈中都有自己的…

深入理解 SpringBoot 日志框架:从入门到高级应用——(三)Logback 输出日志到 MySQL 数据库

文章目录 添加依赖导入 SQL 文件配置 logback-spring.xml运行结果 Logback 是一个开源的日志框架,它支持多种日志输出方式,包括控制台输出、文件输出、邮件输出等。如果要将 Logback 输出的日志保存到 MySQL 数据库中,可以按照以下步骤进行配…

Tapd在研发团队中的使用技巧-持续更新ing

1.TAPD第三方服务集成能力,支持与代码仓库、流水线进行了深度打通,力求为开发团队提供流畅高效的使用体验。我们梳理了一份攻略,掌握下面几个小技能,让TAPD与代码仓库、流水线一起,成为研发团队的得力助手,…

数据结构算法刷题(27)回溯(子集型)

回溯思想: 思路:这种出现全部xx组合的,基本都是回溯算法。首先,当digits是空,那返回也是空。当回溯到边界条件的时候,就更新答案,在非边界条件的时候,循环该数值下的全部情况。 cla…

125760-33-0,Fmoc-Thr(Ac4Galβ1-3Ac2GalNAcα)-OH,于蛋白质糖基化修饰

文章关键词:糖化学试剂,化学试剂,糖基氨基酸一、试剂基团反应特点(Reagent group reaction characteristics): Fmoc-Thr(Ac4Galβ1-3Ac2GalNAcα)-OH中蛋白质糖基化修饰是在糖基转移酶的催化作用下糖链分子…