Caffe学习笔记9:caffe命令行解析

来源:互联网 发布:mac怎么装win10 编辑:程序博客网 时间:2024/06/07 18:35

caffe的运行提供三种接口:c++接口(命令行)、python接口和matlab接口。一般前面两个用的比较多。小菜这里也是看了别人的博客,下面的内容也是来自别人的总结。

caffe的c++主程序(caffe.cpp)放在根目录下的tools文件夹内, 当然还有一些其它的功能文件,如:convert_imageset.cpp, train_net.cpp, test_net.cpp等也放在这个文件夹内。经过编译后,这些文件都被编译成了可执行文件,放在了 ./Build。因此我们要执行caffe程序,都需要加./Build前缀。如:

如:

Build/x64/Release/caffe.exetrain --solver=examples/myfile/solver.prototxt

caffe程序的命令行执行格式如下:

caffe <command> <args>

其中的<command>有这样四种:

Ø  train:训练或finetune模型(model),

Ø  test:测试模型

Ø  device_query:显示gpu信息

Ø  time:显示程序执行时间

其中的<args>参数有:

Ø  -solver:必选参数。一个protocolbuffer类型的文件,即模型的配置文件。

Ø  -gpu:可选参数。该参数用来指定用哪一块gpu运行,根据gpu的id进行选择,如果设置为'-gpu all'则使用所有的gpu运行。如使用第二块gpu运行:

Build/x64/Release/caffe.exe train --solver=examples/myfile/solver.prototxt–gpu 2

Ø  -snapshot:可选参数。该参数用来从快照(snapshot)中恢复训练。可以在solver配置文件设置快照,保存solverstate。

Ø  -weights:可选参数。用预先训练好的权重来fine-tuning模型,需要一个caffemodel,不能和-snapshot同时使用。

Ø  -iteration:可选参数,迭代次数,默认为50。如果在配置文件文件中没有设定迭代次数,则默认迭代50次。

Ø  -model:可选参数,定义在protocol buffer文件中的模型。也可以在solver配置文件中指定。

Ø  -sighup_effect:可选参数。用来设定当程序发生挂起事件时,执行的操作,可以设置为snapshot, stop或none, 默认为snapshot。

Ø  -sigint_effect:可选参数。用来设定当程序发生键盘中止事件时(ctrl+c), 执行的操作,可以设置为snapshot,stop或none, 默认为stop。

注意前面有个-符号。

刚才举例了一些train参数的例子,现在我们来看看其它三个<command>:小菜要在这里说明一下,后面两个小菜是没有测试的,只是了解了一下,刚兴趣的可以去测试一下。

test参数用在测试阶段,用于最终结果的输出,要模型配置文件中我们可以设定需要输入accuracy还是loss. 假设我们要在验证集中验证已经训练好的模型,就可以这样写:

./build/tools/caffetest -model examples/mnist/lenet_train_test.prototxt -weightsexamples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 100

这个例子比较长,不仅用到了test参数,还用到了-model, -weights, -gpu和-iteration四个参数。意思是利用训练好了的权重(-weight),输入到测试模型中(-model),用编号为0的gpu(-gpu)测试100次(-iteration)。

time参数用来在屏幕上显示程序运行时间。如:

#./build/tools/caffe time -model examples/mnist/lenet_train_test.prototxt-iterations 10

这个例子用来在屏幕上显示lenet模型迭代10次所使用的时间。包括每次迭代的forward和backward所用的时间,也包括每层forward和backward所用的平均时间。

#./build/tools/caffe time -model examples/mnist/lenet_train_test.prototxt -gpu 0

这个例子用来在屏幕上显示lenet模型用gpu迭代50次所使用的时间。

#./build/tools/caffe time -model examples/mnist/lenet_train_test.prototxt-weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 10

利用给定的权重,利用第一块gpu,迭代10次lenet模型所用的时间。device_query参数用来诊断gpu信息。

#./build/tools/caffe device_query -gpu 0

最后,我们来看两个关于gpu的例子

#./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 0,1

#./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt -gpu all

这两个例子表示: 用两块或多块GPU来平行运算,这样速度会快很多。但是如果你只有一块或没有gpu, 就不要加-gpu参数了,加了反而慢。

最后,在linux下,本身就有一个time命令,因此可以结合进来使用,因此我们运行mnist例子的最终命令是(一块gpu):

$ sudotime ./build/toos/caffe train –solver examples/mnist/lenet_solver.prototxt

0 0
原创粉丝点击