红联Linux门户
Linux帮助

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

发布时间:2017-05-09 11:15:13来源:linux网站作者:夜中的风
在利用开源深度学习框架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别的均能生成曲线,这个具体的原因以后我再深究一下。分享我生成的图片:
ubuntu+caffe绘制Cifar10数据集loss与accuracy曲线
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30641.html