caffe绘制loss曲线和accuracy曲线

绘制loss和accuracy曲线

  • 首先需要注意:不同版本的caffe训练的log日志不同,一定要用相对应的extra文件夹内的工具来进行解析log文件
  • 首先将extra文件夹拷贝到log文件夹内。
  • copy plot_training_log.py.example 将结尾去掉。
  • 需要将要解析的如caffe.sy.sy.log.INFO.20180105-142432.25764 重命名以log结尾的文件
  • 输入命令
    python plot_training_log.py 6 save.png ../caffe.sy.sy.INFO.20180105-142432.25764.log

    即可在当前文件夹内出现train和test文件。
    同时绘制了根据python参数 0 - 7不同的命令所控制的曲线类型。 0-3 test 4-7 train

踩了几个坑

File “plot_training_log.py”, line 191, in plot_chart(chart_type, path_to_png, path_to_l
list out of range …..

之后报错,主要是因为可以看到生成的log.test文件最后几行只有一个数据,即只有迭代次数,其他信息没有。
可能是由于ssd输出的log不一样。所以改了一下/home/sy/caffe-ssd/tools/extra/plot_training_log.py

def load_data(data_file, field_idx0, field_idx1):
    data = [[], []]
    with open(data_file, 'r') as f:
        for line in f:
            line = line.strip()
            #line = ','.join(filter(lambda x:x, line.split(' ')))
            if line[0] != '#':
                fields = line.split()
                print fields,field_idx1
                if(len(fields) >= 4):  ######################################
                    data[0].append(float(fields[field_idx0].strip()))
                    data[1].append(float(fields[field_idx1].strip()))
    return data

限定一下,只读符合规范的数据。
根本原因在parse这,但是精力有限就不修改了,治标就行了。
画train的时候可能还要改len(fields)等于其他值,自行print修改。

你可能感兴趣的:(caffe)