1、怎么用这个命令
在caffe根目录下输入如下命令:
./build/tools/caffe.bin, 得到如下显示
usage:caffe<command><args>
# 这个是告诉你使用格式, caffe 后接上 一个command命令,后面再接其他参数
commands: #你能选择的命令有一下这么几种
train #训练或者微调一个模型
test #对一个模型打分
device—query #显示GPU诊断信息
time #评估模型执行时间
Flags form tools/caffe.cpp #其他一些参数的总览
-gpu (可选;给定时运行GPU模式,用’ , ’分隔开不同的gpu,
‘-gpu all’表示运行在所有可用的gpu设备上,此时有效训练批量大小就是gpu设备数乘以batch_size)
-iterations (循环迭代次数,默认为50)
-level (可选;定义网络水平,也是NetState中的一个,但我也还不清楚这个的作用)
-model (指定模型定义文本文件名,xxx.prototxt)
-phase (可选;网络是处于TEST还是TRAIN阶段,当你使用command中time命令时,再指定phase就可以选择计算TEST或者TRAIN的耗时)
-sighup_effect (可选;当收到SIGHUP信号时要采取的动作,可选项:snapshot、stop、none,默认为snapshot,即打印快照)
-sigint_effect (可选;当收到当收到SIGINT信号时要采取的动作,可选项同上,默认stop)
-snapshot (可选,恢复训练时指定上次中止的快照,就是比如训练到一般按Ctrl+C终止训练(Linux中这个Ctrl+C不是copy,而是终止当前操作),就会得到一个solverstate 文件,下次恢复训练时就可以指定这个)
-solver ( 指定sovler.prototxt文件,在train的时候需要这个参数)
-stage (可选;也是NetState中的一个,但我也还不清楚这个的作用)
-weights ( 指定用于微调的预训练权值,也即 训练后得到的**.caffemodel文件,不可与snapshot同时出现)
2、caffe.cpp源文件
注:这个文件的内容有些多,我也只是选择性的阅读并注释了部分。
#ifdef WITH_PYTHON_LAYER
#include "boost/python.hpp"
namespace bp = boost::python;
#endif
#include <gflags/gflags.h>
#include <glog/logging.h>
#include <cstring>
#include <map>
#include <string>
#include <vector>
#include "boost/algorithm/string.hpp"
#include "caffe/caffe.hpp"
#include "caffe/util/signal_handler.h"
using caffe::Blob;
using caffe::Caffe;
using caffe::Net;
using caffe::Layer;
using caffe::Solver;
using caffe::shared_ptr;
using caffe::string;
using caffe::Timer;
using caffe::vector;
using std::ostringstream;
DEFINE_string(gpu, "",
"Optional; run in GPU mode on given device IDs separated by ','."
"Use '-gpu all' to run on all available GPUs. The effective training "
"batch size is multiplied by the number of devices.");
DEFINE_string(solver, "",
"The solver definition protocol buffer text file.");
DEFINE_string(model, "",
"The model definition protocol buffer text file.");
DEFINE_string(phase, "",
"Optional; network phase (TRAIN or TEST). Only used for 'time'.");
DEFINE_int32(level, 0,
"Optional; network level.");
DEFINE_string(stage, "",
"Optional; network stages (not to be confused with phase), "
"separated by ','.");
DEFINE_string(snapshot, "",
"Optional; the snapshot solver state to resume training.");
DEFINE_string(weigh