在利用开源深度学习框架caffe进行数据集进行训练与测试的过程中,难免会想要可视化自己训练过程中的一些训练数据,本篇主要介绍如何利用caffe中自带的工具来可视化cifar10训练与测试过程中的误差曲线和精度曲线。
0.准备工作,已经下载好cifar数据集,并且格式也已经转换好。具体代码为:
cd $CAFFE_ROOT #cd到caffe的根目录
./data/cifar10/get_cifar10.sh #该脚本会下载二进制的cifar并解压
./examples/cifar10/create_cifar10.sh #运行后将会在examples中出现数据集.
在这里,只运行上边我写的那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别的均能生成曲线,这个具体的原因以后我再深究一下。分享我生成的图片: