打开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 os

print(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 图形

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux邮件报警脚本

在日常的运维工作中,我们经常会对服务器的磁盘使用情况进行巡检,以防止磁盘爆满导致的业务故障. 如果能编写一个合理完善的监控脚本,当磁盘使用率达到我们设置的阀值时,就自动发送报警邮件,以便我们及时获悉到快爆满的…

【人工智能大脑】仿生学与人工智能交汇:基于MP神经网络的精准农业实践

MP神经网络,即McCulloch-Pitts模型(MCP Model),是神经网络的早期形式之一,由Warren McCulloch和Walter Pitts在1943年提出。这个模型为现代人工神经网络的发展奠定了理论基础,并首次尝试模拟了生物神经元的…

导出 MySQL 数据库表结构、数据字典word设计文档

一、第一种 :利用sql语句查询 需要说明的是该方法应该适用很多工具,博主用的是navicat SELECT TABLE_NAME 表名,( i : i 1 ) AS 序号,COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, IS_NULLABLE…

docker容器快速安装启动ES

1、安装 docker a、使用 Homebrew 安装 brew install --cask --appdir/Applications docker b、手动下载安装 1、安装包下载地址:Install Docker Desktop on Mac | Docker Docs 根据自己的笔记本型号选择,我这边选择的是 intel chip 2、下载安装即可&a…

1.11马原总复习PART1

哲学不都是科学的 资本主义基本矛盾是 生产资料私有占有和生产社会化之间的矛盾;生产资料私有占有和生产社会化之间的矛盾 凝聚力量,思想保证,精神动力,智力支持 绝对剩余价值,必要劳动时间不变,绝对延长…

【前端相关】elementui使用el-upload组件实现自定义上传

elementui使用el-upload组件实现自定义上传 一、问题描述二、实现方式三、实现步骤3.1 方式一:选择后自动上传3.2 方式二:选择图片后手动上传3.3 拓展:上传文件夹 四、服务器相关接口 一、问题描述 elmentui 中的upload默认的提交行为是通过…

【蓝桥杯--图论】Dijkstra、Ballman-Ford、Spfa、Floyd

今日语录&#xff1a;每一次挑战都是一次成长的机会 文章目录 朴素DIjkstra堆优化的DijkstraBallman-FordFloydSpfa(求最短路)Spfa&#xff08;求是否含有负权&#xff09; 如上所示即为做题时应对的方法 朴素DIjkstra 引用与稠密图&#xff0c;即m<n^2 #include<iostrea…

MySQL JSON数据类型

在日常开发中&#xff0c;我们经常会在 MySQL 中使用 JSON 字段&#xff0c;比如很多表中都有 extra 字段&#xff0c;用来记录一些特殊字段&#xff0c;通过这种方式不需要更改表结构&#xff0c;使用相对灵活。 目前对于 JSON 字段的实践各个项目不尽相同&#xff0c;MySQL 表…

面试经典 150 题 - 多数元素

多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1…

C#,入门教程(28)——文件夹(目录)、文件读(Read)与写(Write)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(27)——应用程序&#xff08;Application&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/125094837 C#知识比你的预期简单的多&#xff0c;但也远远超乎你的想象&#xff01; 与文件相关的知识&#xf…

点亮流水灯

目录 1.water_led 2.tb_water_led 50MHZ一个周期是20ns,0.5秒就是20ns0.02um0.00002ms0.000_00002s。0.5/0.000_00002s25_000_000个时钟周期&#xff0c;表示要从0计数到24_999_999 LED灯是低电平点亮&#xff0c;前0.5秒点亮第一个LED灯&#xff0c;当检测到脉冲信号点亮第二…

向量点乘(内积)

向量点乘&#xff1a;&#xff08;内积&#xff09; 点乘&#xff08;Dot Product&#xff09;的结果是点积&#xff0c;又称数量积或标量积&#xff08;Scalar Product&#xff09;。 几何意义&#xff1a; 点乘和叉乘的区别 向量乘向量得到一个数为点乘 向量乘向量得到一个…

对读取的Excel文件数据进行拆分并发请求发送到后端服务器

首先&#xff0c;我们先回顾一下文件的读取操作&#xff1a; 本地读取Excel文件并进行数据压缩传递到服务器-CSDN博客 第一步&#xff1a;根据以上博客&#xff0c;我们将原先的handleFile方法&#xff0c;改为以下内容&#xff1a; const handleFile async(e) > {conso…

从 Vscode 中远程连接 WSL 服务器:可以本地操作虚拟机

从 Vscode 中远程连接 WSL 服务器&#xff1a;可以本地操作虚拟机 1.下载 Vscode Visual Studio Code - Code Editing. Redefined 2.搜索框中输入>wsl&#xff0c;点击 WSL&#xff1a;Connect to WSL using Distro... 3.点击下载好的Ubuntu&#xff0c;当左下角出现图片同…

Linux - 安装字体库解决乱码问题

文章目录 问题描述步骤资源 问题描述 该安装方法&#xff0c;不区分中文和英文字体 Java在linux上转word文档为pdf&#xff0c; linux的字体缺失&#xff0c;导致了转出的pdf为乱码。 ● Linux将word转为pdf后出现乱码&#xff1f; ● 在linux上将word转为pdf 是乱码 ● 在lin…

多维时序 | Matlab实现CNN-GRU-Mutilhead-Attention卷积门控循环单元融合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现CNN-GRU-Mutilhead-Attention卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现CNN-GRU-Mutilhead-Attention卷积门控循环单元融合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍…

有效的数独[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 请你判断一个9 x 9的数独是否有效。只需要根据以下规则&#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一…

测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸

学习了基于OpenCvSharp获取摄像头数据&#xff0c;同时学习了基于ViewFaceCore的人脸识别用法&#xff0c;将这两者结合即是从摄像头中识别人脸。本文测试测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸&#xff0c;并进行人脸红框标记。   新建Winform项目&#xf…

浅谈拨测在网络安全中的应用

在当今数字化时代&#xff0c;网络安全成为各个行业和组织关注的焦点。为了保障网络的稳定性和信息的安全&#xff0c;拨测安全性成为一种日益重要的工具。本文将介绍拨测在网络安全中的应用&#xff1a; 1.威胁模拟 通过威胁模拟&#xff0c;拨测安全性可以模拟各种网络攻击&a…

JVM之java内存区域[2](堆、方法区、直接内存)

文章目录 版权声明一 堆1.1 java堆1.2 模拟堆区的溢出1.3 arthas中堆内存相关的功能1.4 设置大小 二 方法区2.1 方法区简介2.2 补充&#xff1a;字符串常量池和运行时常量池2.3 方法区的大小设计2.4 arthas中查看方法区2.5 模拟方法区的溢出2.7 StringTable的练习题 三 神奇的i…