caffe使用日志文件绘制Loss Accuracy图像

来源:互联网 发布:哪种商品禁止淘宝出售 编辑:程序博客网 时间:2024/06/05 05:16

在使用caffe训练数据集时通常需要对训练过程中损失值、准确率等进行可视化,使用python接口可视化的步骤可以参考博文caffe的python接口学习(7):绘制loss和accuracy曲线,本文将会介绍一种使用命令行训练数据,并利用训练过程的输出进行可视化的方法。

一、caffe 模型训练

在制作好数据集、贴好标签、并将数据集转为lmdb格式之后,就可以对网络进行训练,训练命令如下:

/path_to_caffe/caffe/build/tools/caffe train \    -solver ./solver.prototxt \ #求解文件    -snapshot ./train_iter_18200.solverstate \#使用从snapshot开始训练    >> log.txt 2>&1 #将输出写入到log.txt文件中

二、由log文件绘制Loss&Accuracy图像

在得到命令行输出重定向文件log.txt之后,使用python提取其中损失值与准确率的信息,并绘制在图像中。个人感觉此处代码较为繁琐,如果简便方法欢迎提出。

#coding:utf-8import sysimport reimport matplotlib.pyplot as pltimport numpy as npin_log_path='./log.txt'  #输入日志文件的位置out_fig_path='./log.jpg' #输出图片的位置f=open(in_log_path,'r')accuracy=[]train_loss=[]test_loss=[]max_iter=0test_iter=0test_interval=0display=0target_str=['accuracy = ','Test net output #1: loss = ','Train net output #0: loss = ',            'max_iter: ','test_iter: ','test_interval: ','display: ']while True:    line=f.readline()    # print len(line),line    if len(line)<1:        break    for i in range(len(target_str)):        str=target_str[i]        idx = line.find(str)        if idx != -1:            num=float(line[idx + len(str):idx + len(str) + 5])            if(i==0):                accuracy.append(num)            elif(i==1):                test_loss.append(num)            elif(i==2):                train_loss.append(num)            elif(i==3):                max_iter=float(line[idx + len(str):])            elif(i==4):                test_iter=float(line[idx + len(str):])            elif(i==5):                test_interval=float(line[idx + len(str):])            elif(i==6):                display=float(line[idx + len(str):])            else:                passf.close()# print test_iter# print max_iter# print test_interval# print len(accuracy),len(test_loss),len(train_loss)_,ax1=plt.subplots()ax2=ax1.twinx()#绘制train_loss曲线图像,颜色为绿色'g'ax1.plot(display*np.arange(len(train_loss)),train_loss,color='g',label='train loss',linestyle='-')#绘制test_loss曲线图像,颜色为黄色'y'ax1.plot(test_interval*np.arange(len(test_loss)),test_loss,color='y',label='test loss',linestyle='-')#绘制accuracy曲线图像,颜色为红色'r'ax2.plot(test_interval*np.arange(len(accuracy)),accuracy,color='r',label='accuracy',linestyle='-')ax1.legend(loc=(0.7,0.8))  #使用二元组(0.7,0.8)定义标签位置ax2.legend(loc=(0.7,0.72))ax1.set_xlabel('iteration')#设置X轴标签ax1.set_ylabel('loss')     #设置Y1轴标签ax2.set_ylabel('accuracy') #设置Y2轴标签plt.savefig(out_fig_path,dpi=100) #将图像保存到out_fig_path路径中,分辨率为100plt.show()                 #显示图片

结果截图:


参考资料

  • caffe的python接口学习(7):绘制loss和accuracy曲线
  • matplotlib 教程
  • shell 重定向
阅读全文
0 0
原创粉丝点击