【caffe】caffe采用multistep,绘制loss曲线出错

来源:互联网 发布:淘宝手机充值 编辑:程序博客网 时间:2024/06/17 07:07

(如何绘制loss曲线:http://blog.csdn.net/u013078356/article/details/51154847)

先贴错误:

这里写图片描述
list index out of range~那么应该是某个地方的数据缺失,有标号,但相应数据找不到.
问题就出在,采用multistep时,log里会多出这么一行:

I1114 21:40:12.195529 12199 sgd_solver.cpp:46] MultiStep Status: Iteration 10000, step = 1

在解析log文件时,导致 test的 iteration 重复 , iteration多,而对应的 accuracy 和 loss 就不够,导致list index out of range

可以看一下解析出错的 log.test

Iters Seconds TestAccuracy TestLoss
99500 25799.343378 4.49827e-05 4.49827e-05
100000 25927.137554 2.30168e-05 2.30168e-05
100000 26056.572005 1.12219e-05 1.12219e-05
100500 26183.213138 1.70921e-05 1.70921e-05

100000 重复了, 但是 acc和loss可不会重复,最终就是导致末尾空缺:

119500 31105.913158 1.15026e-05 1.15026e-05
120000 31238.017187 1.16753e-05 1.16753e-05
120500
121000
121500

multistep分别在 50000,100000,120000
所以,空缺三行~

解决办法:

修改parse_log.sh文件
在相应的位置添加一句:
sed -i ‘/MultiStep Status: Iteration/d’ aux.txt
这里写图片描述

sed是一种流编辑器
aux.txt 表示对aux.txt 进行操作
-i 表示直接编辑文件
d表示删除
‘/MultiStep Status: Iteration/d’ 表示删除 含有MultiStep Status: Iteration 这字符串的行

所以对应的,把类似如下含有 MultiStep Status: Iteration 的行给删除了

I1114 21:40:12.195529 12199 sgd_solver.cpp:46] MultiStep Status: Iteration 10000, step = 1

于是乎在匹配 iteration时候就不会重复了

2017年11月15日下午~

原创粉丝点击