绘制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修改。