需要三个文件,以mnist为例,有这三个 train_lenet.sh,lenet_solver.prototxt,lenet_train_test.prototxt。
总的来说,执行 train_lenet.sh —> lenet_solver.prototxt —> lenet_train_test.prototxt,再开始训练网络。
①其中, train_lenet.sh是自己定义的脚本文件,内容如下:
/home/justin/caffe/build/tools/caffe train -solver lenet_solver.prototxt
-sigint_effect snapshot 2>&1 | tee -a ./lenet/solve.log
注意路径,上面的脚本要和lenet_solver.prototxt放一个目录下,脚本才能调用lenet_solver.prototxt。
./lenet/solve.log 意思是在当前目录下的lenet文件夹,保存训练的log文件。
2>&1的解释:Linux的输出中 1 表示标准输出,2 表示错误输出,2>&1 表示将错误的输入重定向到标准的输出中去。(这个不是很懂具体的意思)
②其中,lenet_solver.prototxt中注意
net: "lenet_train_test.prototxt"
snapshot_prefix: "lenet/"
lenet_solver.prototxt要和lenet_train_test.prototxt在一个目录下,lenet_solver.prototxt才能调用lenet_train_test.prototxt。
snapshot_prefix在train_lenet.sh和lenet_solver.prototxt中都要定义,不然会报错。
③其中,lenet_train_test.prototxt定义的是网络结构,这里要注意数据的路径
source: "./mnist_train_lmdb"
上面的意思是当前路径的mnist_train_lmdb存放了训练数据。