Caffe自带工具包---绘制loss和accuracy曲线

  为什么要绘制loss和accuracy曲线?在训练过程中画出accuracy 和loss曲线能够更直观的观察网络训练的状态,以便更好的优化网络的训练。本文主要介绍在基于caffe框架训练网络时,利用caffe自带的工具包来绘制曲线。caffe中自带小工具: caffe-master/tools/extra/parse_log.sh, caffe-master/tools/extra/extract_seconds.py和 caffe-master/tools/extra/plot_training_log.py.example 。

目录

1,训练模型并保存日志文件

2,解析日志文件

3,绘制accuracy 和loss曲线

4,多种曲线参数说明

5,附-常见问题

正文

 1,训练模型并保存日志文件

  在训练过程中把终端输出的结果保存为一个日志文件,注意文件的后缀名必须是.log,这是因为在解析日志文件时有这个要求。如何把终端保存到日志文件? 在训练文件(train_road.sh)中的命令中加入一行参数 ,实现Log日志的记录如train_road_log.sh:

#!/usr/bin/env sh
set -e TOOLS=./build/tools
$TOOLS/caffe train --solver=myself/road/prototxt_files/solver.prototxt 2>&1 | tee myself/road/Log/train_road_20180525.log

  

  或者,参考其他网友的写法,如下:

#!/usr/bin/env sh
set -e
CAFFEROOT=/home/meringue/Softwares/caffe-master
CIFAR10PY=/home/meringue/Documents/CaffePy/cifar10py
MODEL=$CIFAR10PY/cifar10_caffemodels/model_Alex_ST
TOOLS=$CAFFEROOT/build/tools
echo 'start training...' GLOG_logtostderr=0 GLOG_log_dir=$MODEL/LOG/ \ # save log file
$TOOLS/caffe train \
--solver=$MODEL/cifar10_quick_solver.prototxt $@
#!/usr/bin/env sh
set -e
GLOG_logtostderr=0 GLOG_log_dir=/home/liuyun/caffe/models/AAA/A12/Log/ /home/liuyun/caffe/build/tools/caffe train -solver examples/AAA/solver.prototxt \
--weights ./models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel

???

   这样训练结束之后,会在Log文件夹中生成每次训练的Log日志(xxx.log)。如果没有生成.log,可以改成.txt后缀,最后自己手动重名名即可以了。  

  接下来,将文件夹caffe/tools/extra下的parse_log.sh (parse_log.py)、extract_seconds.py、plot_training_log.py.example复制到上一步log日志文件的保存目录下。

2,解析日志文件

  这一步利用caffe中tools/extra文件夹下的parse_log.py来解析日志文件。 (提示:这里记得不要使用python3,因为有些地方不兼容,如果只有python3,那你可以根据提示修改相应的代码,下同。)

具体,进入到前面Log的文件夹下,终端中执行:

# cd caffe

# cd myself/road/Log

(1)使用.py:

# python parse_log.py train_road_0525.log /home/wp/caffe/myself/road/Log/ 

## python parse_log.py train_road_0525.log ./

#parse_log.py后,第1个参数是日志文件log的名字,第2个参数是解析完成log后的保存地址。

结果如下图,注意有逗号:

(2)或者,使用.sh:# sh parse_log.sh train_road_0525.log

运行结束之后,会在当前文件夹下生成一个train_road_0525.log.train文件和一个train_road_0525.log.test文件。

结果如下图,注意无逗号:

3,绘制accuracy 和loss曲线

  利用caffe中tools/extra文件夹下的plot_training_log.py文件来绘制。进入“# cd caffe # cd myself/road/Log” 文件后,

(1)可以直接使用plot_training_log.py.example绘制曲线:

# python plot_training_log.py.example 0 save_train_road_0525.png train_road_0525.log

# 其中,0为图类型编号,全部编号参考《4,多种曲线参数说明》。

(2)也可以,将plot_training_log.py.example改为plot_training_log.py,并执行以下命令就可以绘制曲线:

# python plot_training_log.py 6 save_train_road_0525_6.png train_road_0525.log

# 其中,6为图类型编号,全部编号参考《4,多种曲线参数说明》。

4,多种曲线参数说明

Notes: 
    1. Supporting multiple logs. 
    2. Log file name must end with the lower-cased ".log"
Supported chart types: 
    0: Test accuracy  vs. Iters 
    1: Test accuracy  vs. Seconds 
    2: Test loss  vs. Iters 
    3: Test loss  vs. Seconds 
    4: Train learning rate  vs. Iters 
    5: Train learning rate  vs. Seconds 
    6: Train loss  vs. Iters 
    7: Train loss  vs. Seconds 
 

5,附-常见问题

  利用plot_training_log.py文件来绘制,可能会出现一些问题,如下:

参考:

https://blog.csdn.net/Running_J/article/details/51505715

https://www.zhihu.com/question/49521165

https://blog.csdn.net/u013989576/article/details/71302244

https://blog.csdn.net/wd1603926823/article/details/55001613

进行解决。本文过程图像显示顺利,没有进行有关文件的修改,留做备用。

Caffe---自带工具 绘制loss和accuracy曲线的更多相关文章

  1. Caffe学习系列(19): 绘制loss和accuracy曲线

    如同前几篇的可视化,这里采用的也是jupyter notebook来进行曲线绘制. // In [1]: #加载必要的库 import numpy as np import matplotlib.py ...

  2. Caffe---Pycaffe 绘制loss和accuracy曲线

    Caffe---Pycaffe 绘制loss和accuracy曲线 <Caffe自带工具包---绘制loss和accuracy曲线>:可以看出使用caffe自带的工具包绘制loss曲线和a ...

  3. caffe的python接口学习(7):绘制loss和accuracy曲线

    使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...

  4. 解决caffe绘制训练过程的loss和accuracy曲线时候报错:paste: aux4.txt: 没有那个文件或目录 rm: 无法删除"aux4.txt": 没有那个文件或目录

    我用的是faster-rcnn,在绘制训练过程的loss和accuracy曲线时候,抛出如下错误,在网上查找无数大牛博客后无果,自己稍微看了下代码,发现,extract_seconds.py文件的 g ...

  5. caffe绘制训练过程的loss和accuracy曲线

    转自:http://blog.csdn.net/u013078356/article/details/51154847 在caffe的训练过程中,大家难免想图形化自己的训练数据,以便更好的展示结果.如 ...

  6. 【Caffe】利用log文件绘制loss和accuracy(转载)

    (原文地址:http://blog.csdn.net/liuweizj12/article/details/64920428) 在训练过程中画出accuracy 和loss曲线能够更直观的观察网络训练 ...

  7. Caffe 根据log信息画出loss,accuracy曲线

    在执行训练的过程中,若指定了生成log信息,log信息包含初始化,网络结构初始化和训练过程随着迭代数的loss信息. 注意生成的log文件可能没有.log后缀,那么自己加上.log后缀.如我的log信 ...

  8. caffe-windows画loss与accuracy曲线

    参考博客: http://blog.csdn.net/sunshine_in_moon/article/details/53541573 进入tools/extra/文件夹中,修改plot_train ...

  9. caffe net 可视化工具,,层特征可视化

    1.只用网络在线结构绘制可视化网络模型 http://ethereon.github.io/netscope/#/editor 将对应的网络输入到里面,然后按shift+enter即可查看对应的网络结 ...

随机推荐

  1. Linux 基本权限管理

    1.linux权限表示: -rw-r--r-- (一共10位): 第一位:表示文件类型: 常用的三种文件类型:- 表示一般文件,d 表示目录,l 表示软链接文件: 后九位:每三位为一组: rwx r- ...

  2. Spring框架IOC和AOP介绍

    说明:本文部分内容参考其他优秀博客后结合自己实战例子改编如下 Spring框架是个轻量级的Java EE框架.所谓轻量级,是指不依赖于容器就能运行的.Struts.Hibernate也是轻量级的. 轻 ...

  3. spring中@Profile的作用

    根据系统环境的不同,Profile可以用来切换数据源.例如切换开发,测试,生产环境的数据源. 举个例子: 先创建配置类MainProfileConfig: @Configuration @Proper ...

  4. segi日期计算笔记

    计算月末最后一天 /* * 输入年月格式YM(如:201911),输入该月最后一天 */ int monthEndDay(int YM) { int endDay; ; ; == M) { == Y ...

  5. 究竟什么是Java异常?

    第四阶段 IO 异常处理 没有完美的程序,所以我们需要不断地完善,考虑各种可能性,我们要将除了自己以外的任何用户或者操作者都当成傻子来考虑问题 在我们开发过程中 我们运行时常常会遇到 这样java.l ...

  6. javascript学习笔记 BOM和DOM详解

    js组成 我们都知道, javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异. 1. DOM 是 W ...

  7. 【LOJ】#3103. 「JSOI2019」节日庆典

    LOJ#3103. 「JSOI2019」节日庆典 能当最小位置的值一定是一个最小后缀,而有用的最小后缀不超过\(\log n\)个 为什么不超过\(\log n\)个,看了一下zsy的博客.. 假如\ ...

  8. NOIP(CSP)答题技巧&小细节

    1.主函数类型 通常使用int main(),然而可以使用完全等价的signed main() 解锁 #define int long long  的操作 2.long long 的使用 数列长度/边 ...

  9. NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通

    NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通直接修改网段的话,会登录不上去,解决方法:设置>网络适配器>高级>生成mac地址重新登陆即 ...

  10. 《深入理解 Java 虚拟机》学习 -- Java 内存模型

    <深入理解 Java 虚拟机>学习 -- Java 内存模型 1. 区别 这里要和 JVM 内存模型区分开来: JVM 内存模型是指 JVM 内存分区 Java 内存模型(JMM)是指一种 ...