模型训练日志生成可视化曲线

avatar
作者
猴君
阅读量:0

前言

  因为正好有同学问到在训练过程中产生的日志json文件如何生成可视化的loss曲线图,所以就正好放到这里,如果有需要可以自行取用。我们做深度学习模型跑任务的时候,通常会产生log日志,我们为了方便查看训练过程波动或者生成图像用于论文的编纂,都需要把json格式的文件可视化成一张曲线图,因此提供下面的代码。

一、文件格式

  此处我随机选取了一个项目中的json格式的log文件为例:

{   "mode": "train",   "epoch": 1,   "iter": 500,   "lr": 2e-05,   "memory": 888,   "data_time": 0.00312,   "decode.loss_seg": 0.0622,   "decode.acc_seg": 86.07552,   "loss": 0.0622,   "time": 0.17702 } {   "mode": "train",   "epoch": 2,   "iter": 550,   "lr": 2e-05,   "memory": 888,   "data_time": 0.25216,   "decode.loss_seg": 0.05105,   "decode.acc_seg": 82.76717,   "loss": 0.05105,   "time": 0.43304 }

二、可视化代码

import json import matplotlib.pyplot as plt  def parse_json_file(json_file):     with open(json_file, 'r') as f:         lines = f.readlines()     return lines  def extract_loss(json_lines):     loss = []     for line in json_lines:         data = json.loads(line)         if 'loss' in data:             loss.append(data['loss'])     return loss  def plot_loss_curve(loss):     # plt.figure(figsize=(10, 6))     plt.plot(loss, linestyle='-', color='b', label='Training Loss')     plt.title('Training Loss Curve')     plt.xlabel('Iterations')     plt.ylabel('Loss')     plt.grid(True)     plt.legend()     plt.tight_layout()     plt.show()  # 示例用法 if __name__ == '__main__':     json_file = r'E:\code\D-RISE\utils\20240625_123859.json'     json_lines = parse_json_file(json_file)     loss = extract_loss(json_lines)     plot_loss_curve(loss) 

三、步骤解析 

  • 首先读取json文件
  • 选取每行数据中的“loss”字段作为纵坐标(根据需要可以替换为其他字段)
  • 绘制图像,注释的位置是图像的长宽比,自认为不设置图像更加好看所以注释掉了
  • 如果需要在每个点的位置加一个小圆点可以在plot中设置 marker='o',也可以更换
  • color字段代表曲线颜色,linestyle字段代表曲线风格可以更换为虚线等
  • 下面3个参数分别为图像名称、横坐标、纵坐标
  • 主函数下json_file是自己json文件的路径

四、结果展示 

 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!