参考博文:http://blog.csdn.net/u013078356/article/details/51154847
1.首先在caffe根目录下新建log文件夹,用来存放log文件
2.caffe/examples/mnist下的脚本文件原来的内容为
#!/usr/bin/env sh
set -e
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
主要功能就是train一个Lenet_solver.prototxt定义的网络。将其修改如下:
#!/usr/bin/env sh
set -e
LOG=log/train-`date +%Y-%m-%d-%H-%M-%S`.log
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt 2>&1 | tee $LOG
主要是在log文件夹下新建一个时间命名的log文件并将打印的信息保存到文件中,Linux的输出中 1 表示标准输出,2 表示错误输出,2>&1 表示将错误的输入重定向到标准的输出中去。另外,tee file中tee指令的作用是输出到标准输出的同时,保存到文件file中。如果文件不存在,则创建;如果已经存在,则覆盖之。
3.训练并保存日志。
~/caffe$ ./examples/mnist/train_lenet.sh
在caffe的根目录下执行这个脚本,即可在log文件夹中生成train-2017-09-24-14-44-57.log
4.caffe中其实已经自带了日志分析和绘图的小工具,在 caffe-master/tools/extra/目录下。分别是parse_log.sh 和extract_seconds.py和 plot_training_log.py.example。将他们拷贝到log文件夹中。
5.解析。
~/caffe/log$ ./parse_log.sh train-2017-09-24-14-44-57.log
在log目录下执行这个文件,即可将这个log日志分为.test和.train两个文件。点开可以看到,数据已经做了解析。train中是迭代次数、时间、loss等。Test中是迭代次数、时间和精度等。
6.绘图。
./plot_training_log.py.example 0 save.png train-2017-09-24-14-44-57.log
绘图支持以下8种格式(上图0对应的“精度和迭代次数”):
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
问题:
新系统可能会出现报错:
from backports.functools_lru_cache import lru_cache ImportError: No module named functools_lru_cache
采用的解决办法:
pip uninstall backports.functools_lru_cache
pip uninstall matplotlib
pip install backports.functools_lru_cache
pip install matplotlib
之后再运行作图脚本,就可以了