脚本编写
脚本一
创建训练的脚本文件train.bat
,写入如下训练代码
A:\Caffe\caffe\scripts\build\tools\Debug\caffe-d.exe train --solver=A:\Caffe\caffe\examples\mnist\lenet_solver.prototxt 2>&1 | tee log\train.log
Pause
由于windows自带的控制台运行不方便,我们在gitbash
运行该脚本。
脚本二
灵感来自faster r-cnn自带的生成日志的脚本。
LOG="logs/MNIST_${NET}_${EXTRA_ARGS_SLUG}.txt.`date +'%Y-%m-%d_%H-%M-%S'`"
exec &> >(tee -a "$LOG")
echo Logging output to "$LOG"
time scripts/build/tools/Debug/caffe-d.exe train --solver=A:/Caffe/caffe/examples/mnist/lenet_solver.prototxt
第二个脚本的好处是,时间已经记录在文件名了,不会被新生成的日志覆盖。
脚本发分析
2>&1命令
2>&1
就是用来将标准错误2重定向到标准输出1中的。此处&
就是为了让bash
将1
解释成标准输出而不是文件1。
tee命令
读取标准输入的数据,并将其内容输出成文件。
报错分析
报错
博主直接在powershell下运行该代码,报错如下
A:\Caffe\caffe>A:\Caffe\caffe\scripts\build\tools\Debug\caffe-d.exe train --solver=A:\Caffe\caffe\examples\mnist\lenet_solver.prototxt 2>&1 | tee log\train.log
'tee' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
如果删除tee
命令,重定向>
失败,内容无法保存到log文件里
解决方案:
使用git
自带的模拟bash
的gitbash
工具。
参考资料
* 知乎提问 “如何绘制caffe训练过程中的loss和accurary的曲线??” 知乎用户的回答
* http://blog.csdn.net/astonqa/article/details/8252791
* http://liubin.blog.51cto.com/282313/131298