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

news2024/10/5 13:06:47

这段代码的目的是读取 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 图形

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

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

相关文章

Nacos源码下载与运行

早先在linux环境下搭建过nacos环境 即Centos安装部署nacos实战,本次是从官网上下载源码,本地运行看看,记录过程,方便备查。 第一步、Nacos源码下载 推荐到nacos官网下载 Github地址,本次选择最新版,1.4.7…

计算机毕业设计 基于SpringBoot的民宿租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

解决vue 2.6通过花生壳ddsn(frp内网穿透)实时开发报错Invalid Host header和websocket

请先核对自己的vue版本,我的是2.6.14,其他版本未测试 起因 这两天在维护一个基于高德显示多个目标(门店)位置的项目,由于高德要求定位必须使用https服务,遂在本地无法获取到定位坐标信息,于是…

数藏潮玩开启元宇宙新空间(定制开发)

元宇宙给我们带来了很多的可能性,对于一个品牌或者是平台来说,越早抓住数藏也就越早抓住了元宇宙的早起红利,就能在未来式这个超空间里面占住商机。 而数藏潮玩的想象空间是巨大的,所以能创造的生态也是无限大。在通过对数藏平台…

一文读懂:D3.js的前世今生,以及与echarts的对比

D3.js(Data-Driven Documents)是一种用于创建动态、交互式数据可视化的JavaScript库。它通过使用HTML、CSS和SVG等Web标准,将数据与文档结合,使得数据可以以一种直观和易于理解的方式进行呈现。D3.js的重要性在于它赋予了开发者更…

SSM:Spring + Spring MVC + MyBatis 的整合

SSM 前言整合 前言 在完成 Spring 、Spring MVC 与 MyBatis 基础知识的学习后,下面简单介绍 SSM 框架的整合使用。 整合 SSM,是 Java 开发中常用的一个 Web 框架组合,用于构建基于 Spring 和 MyBatis 的 Web 应用( Spring MVC …

桌面型物联网智能机器人设计(预告)

相关资料 桌面级群控机器人CoCube探索-2022--CSDN博客 视频: 能!有!多!酷!CoCube桌面级群控机器人 让我看看谁在SJTU里划水… 简要介绍 设计一个桌面型物联网智能机器人,以ESP32芯片为核心,配…

Spring Security 6 学习-1

什么是 Spring Security Spring Security文档 Spring Security中文文档 Spring Security 是 Spring 家族中的安全型开发框架,主要解决三大方面问题:认证(你是谁)、授权(你能干什么)、常见攻击保护&#xff…

vue项目中使用Element多个Form表单同时验证

一、项目需求 在项目中一个页面中需要实现多个Form表单,并在页面提交时需要对多个Form表单进行校验,多个表单都校验成功时才能提交。 二、实现效果 三、多个表单验证 注意项:多个form表单,每个表单上都设置单独的model和ref&am…

GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

详情点击链接:GPT4Python近红外光谱数据分析及机器学习与深度学习建模 第一:GPT4入门基础 1、ChatGPT概述(GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变) 2、ChatGPT对话初体验(注册与充值、购买方法&#xff09…

写Shell以交互方式变更Ubuntu的主机名

以下是一个简单的 Bash 脚本,用于以交互方式更改 Ubuntu 20 系统的主机名: 1#!/bin/bash 2 3# 提示用户输入新的主机名 4read -p "请输入新的系统名称(主机名): " new_hostname 5 6# 检查是否输入了新的主机名 7if [ -…

Parallels Desktop 18 for Mac(pd虚拟机) 激活版

Parallels Desktop 18是一款功能强大的虚拟机软件,可以在Mac操作系统上同时运行多种操作系统,包括Windows、Linux、Android等。该软件提供了多种高级功能,如支持DirectX 11游戏、3D图形和OpenGL应用程序,以及运行Windows和Mac应用…

OpenCV书签 #余弦相似度的原理与相似图片/相似文件搜索实验

1. 介绍 余弦相似度(Cosine Similarity),又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度仅仅与向量的指向方向相关,与向量的长度无关,它将向量根据坐标值绘制到向量空间…

网络协议与攻击模拟_07UDP协议

一、简单概念 1、UDP协议简介 UDP(用户数据报)协议,是传输层的协议。不需要建立连接,直接发送数据,不会重新排序,不需要确认。 2、UDP报文字段 源端口目的端口UDP长度UDP校验和 3、常见的UDP端口号 5…

Springboot+vue的医院后台管理系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的医院后台管理系统(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的医院后台管理系统,采用M&#xff08…

Git的管理操作

目录 前言 认识工作区、暂存区、版本库 小结: 使用场景--1: git log: 查看.git文件: 使用场景--2: git status: git diff: 进行提交: 总结: 版本回退 退…

Overleaf(LaTeX文档在线编写平台)使用学习记录

一、LaTeX简概[1] LaTeX,是一种基于TEX的排版系统,是一种可以处理排版和渲染的标记语言。由美国计算机科学家莱斯利兰伯特在20世纪80年代初期开发,利用这种格式系统的处理,即使用户没有排版和程序设计的知识也可以充分发挥由TEX所…

服务器的异步通信——RabbitMQ

目录 一、同步通信 VS 异步通信 二、MQ——消息队列 RabbitMQ RabbitMQ安装 RabbitMQ的整体架构 常见消息模型 基本消息队列(BasicQueue) 工作消息队列(WorkQueue) 发布、订阅(Publish、Subscribe&#xff0…

【CANoe使用大全】——工程新建

文章目录 1、硬件连接2、通道配置2.1通道协议选择2.2映射通道配置2.3.波特率采样点配置 1、硬件连接 前提条件:软件、驱动均已经安装完成 硬件通过UBS接入电脑,Status状态灯为黄色闪烁状态说明硬件设备与电脑连接正常 2、通道配置 2.1通道协议选择 …

架构师的36项修炼-01大型架构演进之路

本课时的主题是大型互联网系统架构的演进之路,主要包含三部分内容。 第一部分是大型互联网系统的特点,分析大型互联网有哪些特点和挑战,它们是现在一些技术和架构方案产生的原因。 第二部分是系统处理能力提升的两种途径,提供了…