欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-14 21:48:11
...

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

先贴错误:

【caffe】caffe采用multistep,绘制loss曲线出错
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
【caffe】caffe采用multistep,绘制loss曲线出错

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日下午~

相关标签: caffe loss绘制