【caffe】caffe采用multistep,绘制loss曲线出错
(如何绘制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日下午~
上一篇: zookeeper集群模式部署
下一篇: js隐藏不需要显示的字符