深度学习读取txt训练数据绘制参数曲线图的方法
有一些深度学习模型是并不像yolo系列那样最终输出相应的参数图,有很多训练形成了一个训练log文件,于是需要读取log文件中的内容并绘制成曲线图。
如下实例,有一个log文件的部分截图,需要将其读取出来并绘制曲线图

废话不多说,直接上代码
import os
import re
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
txt_dir = 'D:/TEST/train.log' # 文件路径
# 读取文件内容
with open(txt_dir, "r") as f:data = f.read()# print(data)
# 利用正则匹配出相应的数据并提取
epoch_num = re.findall("Epoch (.*) Train", data)
# print(epoch_num)
Loss_MSE_MAE = re.findall("Train, (.*), Cost", data) # 由于找不到合适的正则条件,于是先取出来一整行数据后续重新正则匹配
# print(Loss_MSE_MAE)
Loss = []
MSE = []
MAE = []
for info in Loss_MSE_MAE:# print(info)Loss_num = re.findall("Loss: (.*), MSE", info)MSE_num = re.findall("MSE: (.*) MAE", info)MAE_num = re.findall("MAE: (.*)", info)# print(Loss_num, '/n', MSE_num,'/n', MAE_num)Loss.append(Loss_num[0])MSE.append(MSE_num[0])MAE.append(MAE_num[0])
# print(Loss, MSE, MAE)
# 将列表中数字的引号去掉生成参数列表
Loss = str(Loss).replace("'","")
Loss = Loss.replace("[", "").replace("]", "").split(", ")
Loss = [float(d) for d in Loss]MSE = str(MSE).replace("'","")
MSE = MSE.replace("[", "").replace("]", "").split(", ")
MSE = [float(d) for d in MSE]MAE = str(MAE).replace("'","")
MAE = MAE.replace("[", "").replace("]", "").split(", ")
MAE = [float(d) for d in MAE]
# print(Loss, MSE, MAE)# 开始画图,前面我们得到了epoch,这将作为横坐标,得到了Loss, MSE, MAE等参数,将用于画图
# 下面是同时生成三张图的方法,可以参考
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(30, 6), dpi=300)
y_data = [Loss[2:], MSE[2:], MAE[2:]]
colors = ['red', 'green', 'blue']
line_style = ['-', '-', '-']
y_labels = ['Loss', 'MSE', 'MAE']
for i in range(3):# axs[i].plot(epoch_num[2:300], y_data[i], c = colors[i], label = y_labels[i], linestyle = line_style[i]) # 横坐标加了epoch太长axs[i].plot(y_data[i], c = colors[i], label = y_labels[i], linestyle = line_style[i]) # 所以不要了epoch,横坐标自动调整# axs[i].scatter(epoch_num[2:], y_data[i], c = colors[i]) # 每个epoch节点对应的数据axs[i].legend(loc='best') # legend图例,用于说明每条曲线的文字显示axs[i].set_yticks(range(0, 150, 5)) # set_yticks用于设置y刻度列表# axs[i].grid(True, linestyle='--', alpha=0.5) # grid用于设置网格线外观axs[i].set_xlabel("epoch_num", fontdict={'size': 8}) # set_xlabel用于设置x轴标题 axs[i].set_ylabel(y_labels[i], fontdict={'size': 8}, rotation=90) # set_ylabel用于设置y轴标题,rotation表示旋转90度axs[i].set_title("train_metric_{}".format(y_labels[i]), fontdict={'size': 8})
fig.autofmt_xdate() # 改变x轴坐标的显示方法可以斜着表示,不用平着挤一堆
plt.savefig('D:/TEST/train_metric_map.png', bbox_inches='tight', pad_inches=0.0, dpi=300)
# plt.show()
最终得到图像如下




相关文章:
深度学习读取txt训练数据绘制参数曲线图的方法
有一些深度学习模型是并不像yolo系列那样最终输出相应的参数图,有很多训练形成了一个训练log文件,于是需要读取log文件中的内容并绘制成曲线图。 如下实例,有一个log文件的部分截图,需要将其读取出来并绘制曲线图 废话不多说&…...
VB.NET—DataGridView控件教程详解
目录 前言: 过程: 第一步: 第二步: 第三步: 第四步: 第五步: 番外篇: 总结: 前言: DataGridView是.NET FormK中的一个Windows窗体控件,它提供了一个可视化的表格控件,允许用户以表格形式显示和编辑数据。它通常用于显示和编辑数据库…...
MCU测试科普|如何进行MCU芯片测试,具体流程是什么?
MCU芯片测试系统是一种专门用于检测MCU芯片性能和质量的综合性设备。它通常由硬件和软件两部分组成,硬件包括测试仪器、适配器、测试夹具等,用于连接被测MCU芯片和测试机,实现高效高精度的测试。软件部分通常包括测试程序、测试管理软件等&am…...
单向循环代码实现cpp
// 单向循环链表 class CircleLink { public:CircleLink(){head_ new Node();tail_ head_;head_->next_ head_;}~CircleLink(){Node* p head_->next_;while (p ! head_){head_->next_ p->next_;delete p;p head_->next_;}delete head_;}public:// 尾插法 …...
【原创】java+jsp+servlet简单图书管理系统设计与实现
摘要: 图书管理系统是一个专门针对图书馆管理而设计的系统,它可以帮助图书管理员有效的对图书进行管理,在图书管理系统的设计中,首先要考虑的是系统的需求分析,该系统的设计与实现涉及多个方面,包括数据库…...
JVM之jinfo虚拟机配置信息工具
jinfo虚拟机配置信息工具 1、jinfo jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机的各项参数。 使用jps -v 可以查看虚拟机启动时显示指定的参数列表,但是如果想知道未被显示指定的参数的系统默认值,除 …...
软件测试|PO设计模式在 UI 自动化中的实践
PO的思想最早是2013年由IT大佬Martin Flower提出的:https://martinfowler.com/bliki/PageObject.html 没错,就是他 — 没错,就是他 — 在他的文章里有这样一张经典样图,图片中展示了测试代码中直接操作HTML元素和使用PO模式将page对象封装成…...
如何上传自己的Jar到Maven中央仓库
在项目开发过程中,我们常常会使用 Maven 从仓库拉取开源的第三方 Jar 包。本文将带领大家将自己写好的代码或开源项目发布到 Maven中央仓库中,让其他人可以直接依赖你的 Jar 包,而不需要先下载你的代码后 install 到本地。 注册帐号 点击以…...
智能井盖传感器功能,万宾科技产品介绍
在国家治理方面,对社会的治理是一个重要的领域,一定要在推进社会治理现代化过程中提高市政府的管理和工作能力,推动社会拥有稳定有序的发展。在管理过程中对全市井盖进行统一化管理,可能是市政府比较头疼的难题,如果想…...
洛谷P4185 离线+并查集
好题,发现没有强制在线,可以离线操作 排序之后带集合点数的并查集就好了 #include<bits/stdc.h> using namespace std; const int N 1e510; int n,m; int p[N],sz[N];int find(int x){if(x!p[x])p[x] find(p[x]);return p[x]; } struct Node{in…...
遇到java.security.AccessControlException:access denied怎么办?
今天工作中遇到了如下报错,记录一下解决方案。 目录 问题 分析 结论 问题 这个问题出现在openjdk8启动网页端Java应用。 Java Exception:java.security.AccessControlException:access denied("java.net.SocketPermission""22.188.130.11:9000…...
c++对接CAT1400
最近工作中遇到需要对接1400协议,网上搜索不到c/c++的实现,所以记录一下自己的实现。 第一步注册: 1400是在http摘要认证的基础上做的,所以要去了解http摘要认证的流程 说明: 1.视图库通过用户分配,手动分配username,password给三方对接程序 2.三方对接程序第一次请求由…...
Linux基础【Linux知识贩卖机】
偶尔的停顿和修整,对于人生是非常必要的。 --随记 文章目录 Linux目录目录结构磁盘分区相关命令 相对路径和绝对路径 文件权限用户分类umask创建文件权限计算方法粘滞位 总结 Linux目录 目录结构 Linux 操作系统采用了一种层次化的目录结构,常被称为标…...
CSS 边框、轮廓线
一、CSS边框: CSS边框属性允许指定一个元素边框的样式和颜色。 1)、边框样式:border-style属性用来定义边框的样式,border-style值: 2)、边框宽度:border-width属性用于指定边框宽度。指定变宽…...
Transformer架构 完整的处理流程
Transformer 是由多层的 Encoder 和 Decoder 构成的。每一层的 Encoder 和 Decoder 都包含了多头自注意力机制(Multi-head Self Attention)、前馈神经网络(Feed Forward)和添加及归一化(Add & Norm)。特…...
git and svn 行尾风格配置强制为lf
git CLI配置: // 提交时转换为LF,检出时转换为CRLF git config --global core.autocrlf true // 提交时转换为LF,检出时不转换 git config --global core.autocrlf input // 提交检出均不转换 git config --global core.autocrlf f…...
达梦数据库答案
1、 创建数据库实例,到/dm8/data下,数据库名:DEMO,实例名DEMOSERVER(10分) [dmdbadmServer ~]$ cd /dm8/tool [dmdbadmServer tool]$ ./dbca.sh1、 簇大小32,页大小16,登录密码&…...
基于SSM的楼房销售系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
Blender做一个小凳子学习笔记
文章目录 创建椅座椅子腿靠背渲染 本文是这个B站视频的学习笔记:【Blender】爆肝两个月!拜托三连了!这绝对是全B站最用心的(没有之一)Blender 3D建模零基础入门 创建椅座 首先,需要了解其左上角和右上角的…...
Maven简介
一、Maven模型 二、模型实现 三、对应代码项目介绍...
2026年降AI工具改写后阅读自然度对比:哪款工具改出来的文字最通顺
2026年降AI工具改写后阅读自然度对比:哪款工具改出来的文字最通顺 帮五个同学处理过论文,加上自己用的,总共测过六七款工具。 结论先说:综合价格、效果、售后,嘎嘎降AI(www.aigcleaner.com)是…...
HexStrike AI v6.0:基于MCP协议的AI自动化网络安全测试平台实战指南
1. 项目概述:当AI学会“黑”你的系统如果你是一名安全研究员、渗透测试工程师,或者只是一个对网络安全充满好奇的技术爱好者,那么你一定经历过这样的场景:面对一个目标,你需要手动调用Nmap、Gobuster、SQLMap等十几种工…...
机器学习入门:无需编程也能掌握的实战技巧
1. 机器学习入门:编程能力不是门槛很多人误以为机器学习必须从精通编程开始,这其实是个巨大的认知误区。我见过太多优秀的机器学习从业者,他们最初连for循环都写不利索,但这并不妨碍他们构建出精准的预测模型。机器学习本质上是一…...
如何快速部署多语言语义匹配模型:5个高效优化方案完整指南
如何快速部署多语言语义匹配模型:5个高效优化方案完整指南 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 paraphrase-multilingual-MiniLM-L12-…...
Kindle Comic Converter:漫画爱好者的终极数字阅读指南
Kindle Comic Converter:漫画爱好者的终极数字阅读指南 【免费下载链接】kcc KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers. 项目地址: https://gitcode.com/gh_mirrors/kc/kcc 还在为Kindle上阅读漫画时遇到的模…...
ChatGPT翻译实战:技术文档与文学内容的高效处理
1. 项目概述:当ChatGPT遇上翻译需求去年接手一个跨国项目时,我需要在48小时内完成87页技术文档的本地化。传统翻译工具输出的机械结果让我不得不花费大量时间二次润色,直到尝试用ChatGPT进行定向优化。这个经历让我系统整理了AI翻译的实战方法…...
【限时开源】20年老兵私藏的Docker WASM边缘编排框架(含自动降级、冷启优化、安全沙箱三重加固)
更多请点击: https://intelliparadigm.com 第一章:Docker WASM边缘计算部署指南概览 WebAssembly(WASM)正迅速成为边缘计算场景中轻量、安全、跨平台执行逻辑的核心载体,而 Docker 官方自 2023 年起通过 docker buil…...
Refined Now Playing:网易云音乐美化插件终极指南
Refined Now Playing:网易云音乐美化插件终极指南 【免费下载链接】refined-now-playing-netease 🎵 网易云音乐沉浸式播放界面、歌词动画 - BetterNCM 插件 项目地址: https://gitcode.com/gh_mirrors/re/refined-now-playing-netease Refined N…...
VOFA+不止能看波形:手把手教你打造专属直流电机PID调试上位机界面
从零构建直流电机PID调试神器:VOFA高级界面设计实战 调试直流电机PID参数时,你是否厌倦了反复烧录代码、查看波形的低效循环?传统调试方式如同蒙眼走钢丝——每次参数调整都伴随着漫长的编译等待和结果不确定性。本文将彻底改变这一局面&…...
开源硬件改造卡西欧F-91W:传感器扩展与极致能效实践
1. 项目概述:用开源硬件改造经典卡西欧手表 卡西欧F-91W这款1989年问世的电子表堪称工业设计史上的奇迹——它售价仅15美元却拥有惊人的可靠性,三十多年来外观几乎未变,至今仍在全球畅销。但正是这种经典设计激发了"Oddly Specific Obje…...
