python绘制Loss和Acc曲线+读取txt和log文件

log文件如下所示:python绘制Loss和Acc曲线+读取txt和log文件_第1张图片

代码

def read_log(filename):
    fp=open(filename)
    for line in fp.readlines():
        train_loss=line[-27:-18]
        train_acc=line[-8:]

        with open('test.txt','a') as fp2:
            fp2.write(train_loss+train_acc)

    fp.close()

def main():
    filename='Epoch50.log'
    read_log(filename)
    print('写入完成')

if __name__=='__main__':
    main()

完成后
python绘制Loss和Acc曲线+读取txt和log文件_第2张图片

绘制loss和acc曲线

这里的损失是一个Epoch中batchsize=32的数据,相当于一个epoch有308个迭代,50*308个点。(坐标轴改过还是太难看了)
python绘制Loss和Acc曲线+读取txt和log文件_第3张图片
每个Epoch后,对测试集进行准确率的测试。
python绘制Loss和Acc曲线+读取txt和log文件_第4张图片
代码

import matplotlib.pyplot as plt
import numpy as np

def draw_curve(filename):
    data=np.loadtxt(filename,dtype=np.float32)
    y1=data[:,1]
    x1=range(0,50)
    plt.plot(x1,y1,label='Fist line',linewidth=1,color='r',marker='o',
             markerfacecolor='blue',markersize=3)
    plt.show()

def main():
    filename='epoch_acc.txt'
    draw_curve(filename)
    print('Finish')

if __name__=='__main__':
    main()

Python中以’r’,‘r+’,‘w’,‘w+’,‘a’,'a+'打开文件的区别

‘r’只读模式,必须打开一个已有的文件,且只能执行读操作。
‘r+’读+追加模式,可读可写,与‘r’相同之处在于也是必须打开一个已有的文件,不同的是它可写可读,而且写与读不分先 后,即随时都可进行读与写。(写为追加在文件末尾)
‘w’只写模式,打开即默认创建一个新的空文件,当然若打开的是已有文件,则清空文件,且只能执行写操作。
‘w+’写读模式,打开创建新文件,因此需要先把内容写进去在读。即保证文件有内容通过移动光标来读自己想要的部分。
‘a’追加模式,若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写(追加在后面),不能读。即追加写。
‘a+’追加读写模式,打开文件方式同‘a’一样,写方式也和’a’一样,但是可以读。且是任意时刻读写。需要注意的是你若刚用‘a+’打开一个文件,则不能立即读,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置。

参考

matplotlib官方:https://matplotlib.org/gallery/index.html
https://blog.csdn.net/beifangdefengchuilai/article/details/79592454

你可能感兴趣的:(Python)