ubuntu+caffe 绘制Cifar10数据集loss与accuracy曲线

在利用开源深度学习框架caffe进行数据集进行训练与测试的过程中,难免会想要可视化自己训练过程中的一些训练数据,本篇主要介绍如何利用caffe中自带的工具来可视化cifar10训练与测试过程中的误差曲线和精度曲线。

0. 准备工作,已经下载好cifar数据集,并且格式也已经转换好。具体代码为:

cd $CAFFE_ROOT #cd到caffe的根目录
./data/cifar10/get_cifar10.sh  #该脚本会下载二进制的cifar并解压
./examples/cifar10/create_cifar10.sh  #运行后将会在examples中出现数据集.
如果不太懂可参见博客http://blog.csdn.net/liumaolincycle/article/details/47258937写的很详细。不过在这里,只运行上边我写的那3行就可以了。
1. 新建一个Log文件夹

首先声明一下,在ubuntu下配置的caffe框架,我下载的caffe在home下,也就是按照默认的方式来设置的。

具体建立Log文件夹的地址如下:caffe/examples/cifar10/

2. 移动三个文件到Log文件夹下

将caffe/tools/extra下的三个文件:parse_log.sh  extract_seconds.py和 plot_training_log.py.example 复制到1中新建的Log文件夹下。

3. 修改cifar10训练文件

在地址:caffe/examples/cifar10下找到train_quick.sh文件打开,修改后的代码如下:

set -e

TOOLS=./build/tools
GLOG_logtostderr=0 GLOG_log_dir=examples/cifar10/Log/ \
$TOOLS/caffe train \
  --solver=examples/cifar10/cifar10_quick_solver.prototxt $@

# reduce learning rate by factor of 10 after 8 epochs
$TOOLS/caffe train \
  --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \
  --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate $@
也就是去掉了原来中带#号的第一行,并且在原文件夹中添加了一个新行:

GLOG_logtostderr=0 GLOG_log_dir=examples/cifar10/Log/ \
如果你建立的Log的地址与我的相同,直接用上面的代码就行,如果不同根据自己的需要修改dir=  后边的地址。上边这句的作用是保存生成过程中的训练日志。

4. 进行日志的生成

cd到caffe的根目录,然后输入以下语句:

./examples/cifar10/train_quick.sh
此后cifar10数据集将会开始训练,训练完成后,查看 caffe/examples/cifar10/Log文件夹下边,会发现里边多了一个caffe.cat.dog.log.INFO.20170508-141812.7610的文件,其中cat与dog分别为训练时系统名与用户名,当然里边的时间是动态生成的。这个就是我们训练的系统日志,为了让它生成我们需要的误差曲线,需要做一些修改,将上边一长串的名字改为cifar.log当然cifar可以是随便起的,但是扩展名为.log这个是必需的。

5. 生成训练的loss与accuracy曲线

终端当前是在caffe根目录下,需要cd到Log下,即:

cd examples/cifar10/Log
然后输入以下语句:
./plot_training_log.py.example 0  save.png cifar.log
便生成了一个曲线图,当然只是8条曲线类型中的一种,example后的数字0可以换为0-7中的任何一个,具体的含义为:

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
值得说明的是,在此过程中,我输入除了4  5别的均能生成曲线,这个具体的原因以后我再深究一下。分享几个我生成的图片:

ubuntu+caffe 绘制Cifar10数据集loss与accuracy曲线_第1张图片


ubuntu+caffe 绘制Cifar10数据集loss与accuracy曲线_第2张图片

ubuntu+caffe 绘制Cifar10数据集loss与accuracy曲线_第3张图片ubuntu+caffe 绘制Cifar10数据集loss与accuracy曲线_第4张图片

你可能感兴趣的:(caffe,caffe,ubuntu,可视化)