因为正好有同学问到在训练过程中产生的日志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)