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


    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.shparse_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

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

     

  • 相关阅读:
    分布式事务之最终一致性BASE理论
    CAP理论
    Comparator中返回0导致数据丢失的大坑
    电脑主板分类
    SimpleDateFormat线程不安全
    Redis面试题
    JS闭包
    ES6将两个数组合并成一个对象数组
    视频色彩空间RGB、YUV、YCbCr
    c#接口作用的深入理解
  • 原文地址:https://www.cnblogs.com/carle-09/p/9088347.html
Copyright © 2020-2023  润新知