外包 | 根据训练模型过程记录画图
相关文件下载
相关文件下载
这是一个22Mb大的 txt 文件, 所以建议不要直接双击用记事本打开, 我们只需要打开浏览器, 然后将这个文件拖到浏览器里面, 大概看一下长什么样子就好了:
可以看到, 其每一行的基本格式都是如下:
Epoch:1/150 || Epochiter: 1/1116 || Iter: 1/167400 || Loc: 4.3982 Cla: 16.1386 || LR: 0.00100000 || Batchtime: 1.5518 s || ETA: 3 days, 0:09:35
代码
根据需求, 我们是要将里面每一行的 iteration 和 Loc和Cla值 提取出来, 既然每行格式固定, 那就用正则表达式就好了
import re
import matplotlib.pyplot as plt
iter_list = [] # 记录iteration
loc_list = [] # 记录Loc
cla_list = [] # 记录Cla
count = 0
with open('./results.txt', 'r') as f:
lines = f.readlines()
for i in range(len(lines)):
if i % 100 == 1:
# 正则表达规则
tmp = re.match(r'(.*?)Iter: (.*?) \|\| Loc: (.*?) Cla: (.*?) \|\| (.*?)', lines[i])
iter_list.append(int(tmp.group(2).split('/')[0]))
loc_list.append(float(tmp.group(3)))
cla_list.append(float(tmp.group(4)))
plt.figure(figsize=(15, 11))
ax1 = plt.subplot(2, 1, 1)
plt.plot(iter_list, loc_list, label='loc', color='royalblue')
plt.ylim(0, 15)
plt.title('loc-loss')
plt.xlabel('iteration')
plt.ylabel('loss')
plt.legend()
ax2 = plt.subplot(2, 1, 2)
plt.plot(iter_list, cla_list, label='cla', color='darkorange')
plt.ylim(0, 15)
plt.title('cla-loss')
plt.xlabel('iteration')
plt.ylabel('loss')
plt.legend()
plt.show()