读取.json文件绘制模型训练acc和loss变化曲线

模型训练过程保存在.json文件中,读取.json绘制acc和loss变化曲线,方便观察模型随Iteration收敛情况的变化:
在这里插入图片描述
代码实现:
1、两个模型训练acc随Iteration的变化

import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
import json
data_path_1 = "./1.json"
data_path_2 = "./2.json"
def read_json(data_path, stage, key_1, key_2):
    iter, acc_seg = [], []
    with open(data_path, 'r') as f:
        content = f.readlines()
        for line in content:
            if json.loads(line)["mode"] == stage:
                iter.append(json.loads(line)[key_1])
                acc_seg.append(json.loads(line)[key_2])
    return iter, acc_seg

iter_1, acc_seg_1 = read_json(data_path_1, "train", "iter", "decode.acc_seg")
iter_2, acc_seg_2 = read_json(data_path_2, "train", "iter", "decode.seg.acc_seg")
max_value = max(acc_seg_1) if max(acc_seg_1) > max(acc_seg_2) else max(acc_seg_2)
print(max_value)
#设置横纵坐标的名称以及对应字体格式
font = {'family' : 'Times New Roman',
'weight' : 'normal',
'size' : 10,
}
index = 0
# for i in range(len(acc_seg_2)):
#     if acc_seg_2[i] >= 80:
#         index = i
#         break
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_xlabel('iteration', font)
ax.set_ylabel('acc_seg', font)
ax.set_title('Seg Acc',size=10)
ax.plot(iter_1[index:], acc_seg_1[index:], label = "model_1")
ax.plot(iter_2[index:], acc_seg_2[index:], label = "model_2")
plt.legend(loc='upper right')
plt.show()

在这里插入图片描述
2、两个模型训练loss随Iteration的变化

import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
import json
data_path_1 = "./1.json"
data_path_2 = "./2.json"
def read_json(data_path, stage, key_1, key_2):
    iter, acc_seg = [], []
    with open(data_path, 'r') as f:
        content = f.readlines()
        for line in content:
            if json.loads(line)["mode"] == stage:
                iter.append(json.loads(line)[key_1])
                acc_seg.append(json.loads(line)[key_2])
    return iter, acc_seg

iter_1, loss_seg_1 = read_json(data_path_1, "train", "iter", "decode.loss_seg")
iter_2, loss_seg_2 = read_json(data_path_2, "train", "iter", "decode.seg.loss_seg")
max_value = max(loss_seg_1) if max(loss_seg_1) > max(loss_seg_2) else max(loss_seg_2)
print(max_value)
#设置横纵坐标的名称以及对应字体格式
font = {'family' : 'Times New Roman',
'weight' : 'normal',
'size' : 10,
}
index = 0
# for i in range(len(loss_seg_2)):
#     if loss_seg_2[i] <= 0.25:
#         index = i
#         break
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_xlabel('iteration', font)
ax.set_ylabel('loss_seg', font)
ax.set_title('Seg Loss',size=10)
# y_major_locator=MultipleLocator(0.01)
# ax.yaxis.set_major_locator(y_major_locator)
ax.plot(iter_1[index:], loss_seg_1[index:], label = "model_1")
ax.plot(iter_2[index:], loss_seg_2[index:], label = "model_2")
plt.legend(loc='upper right')
plt.show()

在这里插入图片描述

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值