Python 正则提取log日志中的Loss和Epoch信息,绘制二维折线图
文章一:使用的方法是读取txt指定位置的关键词,简单明了,但是如果每一行有变动,则提取的信息不全。
我使用正则的方法提取数据,效果更好一些。但是要注意正则提取出的数据格式为str,需要转换成float,具体操作可以看代码:
稍加修改,这个代码同样适用于prediction vs epoch, xxx vs epoch…
# coding:utf-8
import matplotlib.pyplot as plt
import re
# result.txt 来自训练模型输出的log日志
data_dir = "/Users/xxx/Code/Script/result.txt"
Train_Loss_list = []
Train_Accuracy_list = []
Valid_Loss_list = []
Valid_Accuracy_list = []
f1 = open(data_dir,'r')
data = []
for line in f1:
if(line.find('[train][INFO]')>=0):
pattern = re.compile(r'"train_loss": "(.*?)"') # 查找数字
result1 = pattern.findall(line)
result1 = float(result1[0])
Train_Loss_list.append(result1)
f1.close()
#迭代了97次,所以x的取值范围为(0,97),
x1 = range(97)
y1 = Train_Loss_list
plt.plot(x1, y1,label="Train_Loss_list")
plt.show()
# Plot教程:
# https://cxymm.net/article/weixin_40293250/107029595