打开json文件,读取里边的每一行数据,每一行数据是一个字典,使用matplotlib画图

这段代码的目的是读取 JSON 文件,提取关键信息,然后使用 Matplotlib 绘制四个子图,分别显示不同的指标随着 iter 变化的情况。这种图形化分析有助于直观地了解模型的性能。

画图结果如下:

json文件格式如下:下面只粘贴出来前6行数据

{"mode": "train", "epoch": 1, "iter": 50, "lr": 0.0, "memory": 19479, "data_time": 0.00483, "decode.loss_ce": 4.60138, "decode.acc_seg": 0.23948, "aux_identity.loss_ce": 4.31477, "aux_identity.acc_seg": 0.14401, "loss": 8.91615, "time": 0.65278}
{"mode": "train", "epoch": 1, "iter": 100, "lr": 1e-05, "memory": 19479, "data_time": 0.00338, "decode.loss_ce": 4.43467, "decode.acc_seg": 0.62701, "aux_identity.loss_ce": 3.0979, "aux_identity.acc_seg": 0.85732, "loss": 7.53257, "time": 0.60686}
{"mode": "train", "epoch": 1, "iter": 150, "lr": 1e-05, "memory": 19479, "data_time": 0.00342, "decode.loss_ce": 4.10557, "decode.acc_seg": 2.23878, "aux_identity.loss_ce": 2.13645, "aux_identity.acc_seg": 7.20875, "loss": 6.24202, "time": 0.60892}
{"mode": "train", "epoch": 1, "iter": 200, "lr": 1e-05, "memory": 19479, "data_time": 0.00344, "decode.loss_ce": 3.77826, "decode.acc_seg": 8.71241, "aux_identity.loss_ce": 1.75049, "aux_identity.acc_seg": 13.31084, "loss": 5.52875, "time": 0.60606}
{"mode": "train", "epoch": 1, "iter": 250, "lr": 2e-05, "memory": 19479, "data_time": 0.00344, "decode.loss_ce": 3.17202, "decode.acc_seg": 19.45514, "aux_identity.loss_ce": 1.451, "aux_identity.acc_seg": 16.99208, "loss": 4.62302, "time": 0.59555}
{"mode": "train", "epoch": 1, "iter": 300, "lr": 2e-05, "memory": 19479, "data_time": 0.00348, "decode.loss_ce": 2.56726, "decode.acc_seg": 29.93745, "aux_identity.loss_ce": 1.16545, "aux_identity.acc_seg": 23.99233, "loss": 3.73271, "time": 0.59519}

具体绘制代码如下:

import json
import matplotlib.pyplot as plt
import osprint(os.path.abspath(__file__))#打印当前路径# 存储读取的数据,创建一个字典 data 用于存储 JSON 文件中的数据,每个键对应一个需要提取的数据列。
data = {"mode": [], "epoch": [], "iter": [], "lr": [], "memory": [],"data_time": [], "decode.loss_ce": [], "decode.acc_seg": [],"aux_identity.loss_ce": [], "aux_identity.acc_seg": [],"loss": [], "time": []}# 读取JSON文件
json_file_path = '/home/lsj/code/model/ZegCLIP/draw/20240120_151005.log.json'  # 请替换成实际的JSON文件路径
print("json_file_path:",json_file_path)with open(json_file_path, 'r') as json_file:for line in json_file:#遍历 JSON 文件的每一行。json_data = json.loads(line)#解析 JSON 行并将其转换为 Python 字典。if json_data["mode"]=="val":continue# 提取所需的键值for key in data.keys():#遍历 data 字典的键,将每个键对应的值添加到 data 字典中。# print("key:",key)# print("data[key]:",data[key])# print("json_data[key]:",json_data[key])data[key].append(json_data[key])# 绘制图形
fig, axs = plt.subplots(2, 2, figsize=(12, 8))#创建一个包含 2x2 子图的 Matplotlib 图形。#在第一个子图中绘制 decode_loss_ace 随着 iter 的变化图,并设置标签。
axs[0, 0].plot(data['iter'], data['decode.loss_ce'], label='decode.loss_ce')
axs[0, 0].set_title('Decode Loss (ACE)')
axs[0, 0].set_xlabel('iter')
axs[0, 0].set_ylabel('Loss')
axs[0, 0].legend()#在第一个子图中绘制 decode_acc_seg 随着 iter 的变化图,并设置标签。
axs[0, 1].plot(data['iter'], data['decode.acc_seg'], label='decode.acc_seg')
axs[0, 1].set_title('Decode Accuracy (Seg)')
axs[0, 1].set_xlabel('iter')
axs[0, 1].set_ylabel('Accuracy')
axs[0, 1].legend()#在第一个子图中绘制 aux_identity_loss_ce 随着 iter 的变化图,并设置标签。
axs[1, 0].plot(data['iter'], data['aux_identity.loss_ce'], label='aux_identity.loss_ce')
axs[1, 0].set_title('Aux Identity Loss (CE)')
axs[1, 0].set_xlabel('iter')
axs[1, 0].set_ylabel('Loss')
axs[1, 0].legend()#在第一个子图中绘制 aux_identity.acc_seg 随着 iter 的变化图,并设置标签。
axs[1, 1].plot(data['iter'], data['aux_identity.acc_seg'], label='aux_identity.acc_seg')
axs[1, 1].set_title('Aux Identity Accuracy (Seg)')
#axs[1, 1].set_xlabel('Epoch')
axs[1, 1].set_xlabel('iter')
axs[1, 1].set_ylabel('Accuracy')
axs[1, 1].legend()plt.tight_layout()#调整子图的布局,以确保它们不会重叠
plt.show()#展示 Matplotlib 图形

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

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

相关文章

大模型镜像打包实战:CodeGeeX2为例

资源地址 docker torch镜像地址 CodeGeeX2 github 构建思路 查看CodeGeeX2项目,官方已经提供好启动脚本,配置好各种依赖应该就可以运行。 python ./demo/run_demo.pyusage: run_demo.py [-h] [--model-path MODEL_PATH] [--example-path EXAMPLE_PAT…

计算机网络学习The next day

在计算机网络first day中,我们了解了计算机网络这个科目要学习什么,因特网的概述,三种信息交换方式等,在今天,我们就来一起学习一下计算机网络的定义和分类,以及计算机网络中常见的几个性能指标。 废话不多…

yarn集群datanode无法启动问题排查

一、问题场景 hdfs无法访问,通过jps命令查看进程,发现namenode启动成功,但是所有datanode都没有启动,重启集群(start-dfs.sh)后仍然一样 二、原因分析 先看下启动的日志有无报错。打开Hadoop的日志目录 …

C#,入门教程(24)——类索引器(this)的基础知识

上一篇: C#,入门教程(23)——数据类型转换的一点基础知识https://blog.csdn.net/beijinghorn/article/details/124187182 工业软件首先要求高可靠性、高可维护性。 作为工业软件的开发者,我们对语言重载的需求是:“不可或缺”。 …

创建数组(数组基本方法)

组相同类型数据的集合 java中数组特点: 1.数组在内存中是连续分配的 2.在创建数组时,要指明数组的长度 3.访问数组,通过索引,从0开始,到数组长度-1 功能: 1.插入:向索引位置插入一个元素&#…

Gitee Reward让开源作者不再为爱发电

一、什么是Gitee Reward? Gitee Reward是Gitee为改善开源开发生命周期提出的新策略。开源项目的支持者们可以更轻松地为其喜爱的项目提供资金,贡献者们也可以因为其不懈的开源贡献得到奖励。 二、Gitee Reward上允许哪些类型的项目? 允许任…

stable diffuison的安装和使用

stable diffuison的安装和使用 简单介绍 Stable Diffusion是一个深度学习文本到图像的生成模型,它可以根据文本描述生成详细的图像。这个模型主要应用于文本生成图像的场景中,通过给定的文本提示词,模型会输出一张与提示词相匹配的图片。 S…

Cadence——布局部分相关教程

本文章基于【凡亿】Cadence Allegro 17.4零基础入门66讲PCB Layout设计实战加个人理解写出 (一)中英文切换 注意:只是将选项卡部分切换中文 1,设置中文 a,打开PCB Editor 17.4以后,点击Help和About b,可以看到与下…

服务器或服务器主板中的BIOS更新详解

BIOS更新总共有三种方式:DOS、UEFI Shell以及BMC网页更新,而其中,DOS与Shell的更新方式类似,因此以下为统一描述。 一、UEFI Shell或DOS下更新 当我们下载了官网的BIOS更新包并解压后可以获得一些更新文件,在更新文件…

舞动微服务的安全舞伴:服务熔断与服务降级的精妙演绎

目录 引言 1、服务熔断:避免连锁反应的舞姿 1.1 什么是服务熔断? 1.2服务熔断的工作原理 场景:支付服务的重要性 1. 监控支付服务 2. 设定阈值 3. 熔断器状态 4. 触发熔断 5. 定时检测 6. 自动恢复 1.3解析 2、服务降级&#xf…

Python基础第七篇(Python的文件操作)

文章目录 一、文件编码二、文件的读取操作1.操作代码2.读出结果 三、文件的写出操作1.源代码2.读出结果 四、文件的追加操作1.源代码2.读出结果 这篇文章旨在深入浅出地介绍Python在文件操作上的能力,包括文件的编码、读取和写入等基本操作。内容丰富、易于理解&…

Homicide+Reports1980-2014连环凶案数据,CSV格式

这个数据集提供了关于谋杀案件的详细信息,包括涉及的机构、受害者和肇事者的信息,以及犯罪的其他细节。下面是每个字段的详细解释: Record ID: 记录的唯一标识符。Agency Code: 执行机构的代码。Agency Name: 执行机构的名称。Agency Type: …

公网环境调试本地配置的Java支付宝沙箱环境模拟支付场景

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

java SSM项目预算生成管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM项目预算生成管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的 源代码和数据库,系统主…

浅析Java虚拟机中的ZGC

引言 为什么需要垃圾回收(Garbage Collection) 垃圾回收是Java开发中的关键机制,负责自动管理内存,防止内存泄漏,提高开发效率和应用程序的稳定性。 Java中主要的垃圾回收方法 标记-清除算法(Mark and …

盘点好用内容合规监测工具

网页敏感内容监测 Web Purify 由 WebPurify 提供,这是一个专门从事内容审核和过滤服务的公司。 核心功能 ● 文本审核:加强脏话过滤,标记仇恨言论、偏执、性挑逗等 ● 图片审核:让个人资料照片、社交应用程序、产品定制远离令…

python windows和linux 文件同步

在Python中,可以使用paramiko库来实现Windows和Linux之间的文件同步。paramiko是一个用于SSH连接的Python库,可以用于在Windows和Linux之间进行文件传输。 以下是一个简单的示例代码,演示如何使用paramiko库在Windows和Linux之间同步文件&am…

20.【TypeScript 教程】类型别名

TypeScript 类型别名 本节介绍的类型别名,就是通过关键字 type 给类型起个别名,类型别名较多应用于联合类型、交叉类型这种复合类型。 1. 解释 类型别名会给类型起个新名字。类型别名有时和接口很像,但是可以作用于原始值,联合类…

暴力破解常见的服务器

目录 使用 pydictor 生成自己的字典工具liunx下载使用常用的参数说明插件型字典 (可自己根据 API 文档开发) 使用 hydra 工具在线破解系统用户密码使用 hydra 破解 windows 7 远程桌面密码使用 hydra 工具破解 ssh 服务 root 用户密码 使用 Medusa 工具在线破解medusa参数说明M…

web搭建和nfs

一、web服务器搭建 1、基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# vim /etc/nginx/conf.d/openlab.conf server {listen…