利用正则表达式画loss图

import matplotlib.pyplot as plt
import numpy as np
import re

data1_loss=[]
data2_loss=[]

#文件中各提取关键数值所在的位置
Epoch = 0
train_loss = 0
train_acc = 1
test_loss =2
test_acc = 3

f =open("./loss.txt", 'r', encoding="utf8")
lines = f.readline()
while lines:
    result1 = re.findall(r'\d+',lines)  # 读取整数
    result2 = re.findall(r"\d+\.\d{2}",lines)  # 读取小数;\d{2}表示取2位数值;\d+ 表示不限制位数

    #读取epoch和train_loss
    print(type(result1[Epoch]),"===\n")
    data1_loss.append(int(result1[Epoch]))
    data1_loss.append(float(result2[train_loss]))

    # 读取epoch和test_loss
    data2_loss.append(int(result1[Epoch]))
    data2_loss.append(float(result2[test_loss]))
    lines = f.readline()
f.close()

#reshape为所需排序
data1_loss = np.reshape(data1_loss, [-1, 2])

data2_loss = np.reshape(data2_loss, [-1, 2])
print(data1_loss)
print(data2_loss)
# train
x = data1_loss[:,0]
y = data1_loss[:,1]

# test
x1 = data2_loss[:,0]
y1 = data2_loss[:,1]


fig = plt.figure(figsize = (7,5))    #figsize是图片的大小`
ax1 = fig.add_subplot(1, 1, 1) # ax1是子图的名字`

# "g"代表green,表示画出的曲线是绿色,"-"表示画出的曲线是实线,label表示图例的名称
plt.plot(x, y, 'r-', label=u'Dense_Unet')
plt.plot(x1, y1, 'b-', label=u'RCSCA_Net')
plt.legend()

plt.xlabel(u'iters')
plt.ylabel(u'loss')
plt.title('Compare loss for different models in training.')
plt.show()

loss.txt文件中的格式

Epoch:	1	train_loss =	4.142114	train_acc =	4.0993	test_loss =	3.234043	test_acc =	5.6693	
Epoch:	2	train_loss =	3.693510	train_acc =	5.4395	test_loss =	3.214747	test_acc =	8.6614	
Epoch:	3	train_loss =	3.471652	train_acc =	6.5432	test_loss =	3.209918	test_acc =	8.6614	
Epoch:	4	train_loss =	3.385246	train_acc =	7.7651	test_loss =	3.203145	test_acc =	10.5512	
Epoch:	5	train_loss =	3.276946	train_acc =	9.4994	test_loss =	3.190650	test_acc =	12.4409	
Epoch:	6	train_loss =	3.210690	train_acc =	10.9578	test_loss =	3.166755	test_acc =	15.7480	
Epoch:	7	train_loss =	3.136659	train_acc =	13.2440	test_loss =	3.122745	test_acc =	22.8346	
Epoch:	8	train_loss =	3.023211	train_acc =	17.8163	test_loss =	3.052512	test_acc =	26.7717	
Epoch:	9	train_loss =	2.899264	train_acc =	21.4032	test_loss =	2.920071	test_acc =	34.0157
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值