caffe基础(7): 命令行解析
caffe的运行提供三种接口:c++接口(命令行)、Python接口和matlab接口。本文先对命令行进行解析,后续会依次介绍其它两个接口。
caffe的c++主程序(caffe.cpp)放在根目录下的tools文件夹内, 当然还有一些其它的功能文件,如:convert_imageset.cpp, train_net.cpp, test_net.cpp等也放在这个文件夹内。经过编译后,这些文件都被编译成了可执行文件,放在了 ./build/tools/ 文件夹内。因此我们要执行caffe程序,都需要加 ./build/tools/ 前缀。
如:
- ./build/tools/caffe train --solver=examples/mnist/train_lenet.sh
caffe程序的命令行执行格式如下:
- caffe <command> <args>
其中的<command>有这样四种:
- train
- test
- device_query
- time
对应的功能为:
train----训练或finetune模型(model),
test-----测试模型
device_query---显示gpu信息
time-----显示程序执行时间
其中的<args>参数有:
- -solver
- -gpu
- -snapshot
- -weights
- -iteration
- -model
- -sighup_effect
- -sigint_effect
注意前面有个-符号。对应的功能为:
-solver:必选参数。一个protocol buffer类型的文件,即模型的配置文件。如:
- ./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt
-gpu: 可选参数。该参数用来指定用哪一块gpu运行,根据gpu的id进行选择,如果设置为'-gpu all'则使用所有的gpu运行。如使用第二块gpu运行:
- ./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 2
-snapshot:可选参数。该参数用来从快照(snapshot)中恢复训练。可以在solver配置文件设置快照,保存solverstate。如:
- ./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt -snapshot examples/mnist/lenet_iter_5000.solverstate
-weights:可选参数。用预先训练好的权重来fine-tuning模型,需要一个caffemodel,不能和-snapshot同时使用。如:
- ./build/tools/caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
-iterations: 可选参数,迭代次数,默认为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/caffe test -model examples/mnist/lenet_train_test.prototxt -weights examples/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):
- $ sudo time ./build/toos/caffe train -solver examples/mnist/lenet_solver.prototxt
caffe基础(7): 命令行解析相关推荐
- [编程基础] Python命令行解析库argparse学习笔记
Python argparse教程展示了如何使用argparse模块解析Python中的命令行参数. 文章目录 1 使用说明 1.1 Python argparse可选参数 1.2 Python ar ...
- 【Rust】argh:基于 derive 宏且对二进制体积进行优化的命令行解析工具
Derive-based argument parsing optimized for code size and conformance to the Fuchsia commandline too ...
- Python命令行解析:sys.argv[]函数的简介、案例应用之详细攻略
Python命令行解析:sys.argv[]函数的简介.案例应用之详细攻略 目录 sys.argv[]函数的简介 sys.argv[]函数的案例应用 1.基础测试 2.进阶用法 3.sys.argv[ ...
- ffmpeg.c学习-1-框架分析及命令行解析
ffmpeg.c学习-1-框架分析及命令行解析 目录 掌握ffmpeg.c的意义 ffmpeg框架分析 ffmpeg对应的⽂件 ffmpeg程序框架流程 命令行解析 1. 掌握ffmpeg.c的意义 ...
- linux c 命令行解析 getopt getopt_long optarg optind opterr optopt 简介
目录 getopt 函数 测试代码 getopt_long函数 代码示例 getopt 函数 头文件 #include<unistd.h> 定义函数 int getopt(int argc ...
- python解析库_Python命令行解析库argparse
原博文 2014-08-13 05:48 − 2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse模块对命令行进行解析. 1.example 有一道面试 ...
- docker命令行解析以及如何向服务器端发送请求(docker源码学习一)
最近在看doccker的源码,最新的master分支(估计是1.12.4,因为最新的release是1.12.3)命令行解析全部都使用了第3方的包https://github.com/spf13/co ...
- python:argparse命令行解析模块详解
argparse命令行解析模块学习 import argparse parser = argparse.ArgumentParser() #类似于初始化吧 parser.parse_args() #解 ...
- .NET:命令行解析器介绍
背景 经常需要开发一下小工具,之前都是自己解析命令行参数,接触过动态语言社区以后,发现命令行解析有特定的模式和框架可以利用,本文介绍一个 .NET 平台的类库. 示例 需求 拷贝文件,如:CopyFi ...
最新文章
- 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )
- awk 截取部分字符串_linux三剑客-awk
- wso2 esb_使用WSO2 ESB构建制造服务总线(MSB)
- 如何将图片序列化_PS如何将图片制作成gif动态图 ps制作gif动态图教程
- 【2019牛客暑期多校训练营(第三场)- B】Crazy Binary String(思维,01串,前缀和)
- 东芝半导体-三极管和功率管-元器件后缀说明解释-L3F
- 三星、联想和微软的设备将搭载Android 12L
- 数据库的相关语句(where,order by)
- Windows XP远程桌面控制图文教程
- 九度 题目1394:五连击数组
- HDU 2296 Ring -----------AC自动机,其实我想说的是怎么快速打印字典序最小的路径...
- 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
- UDP数据包大小设定
- flowable设计器自定义自己的人员选择器
- Android免打包多渠道统计如何实现?通用流行框架大全
- 703n的OpenWrt配置四:把路由器变成下载机
- Java面试-001
- 打破构图的平衡!增强设计感染力
- ets Jan8 2013,rst cause :2,boot mode :(1,7)_ESP8266学习笔记(6)
- C#接口定义,索引器的定义
热门文章
- boost::hana::template_用法的测试程序
- boost::detail::lowest_bit的测试程序
- Boost:双图bimap与标记的双向地图的测试程序
- ITK:创建三角形四边形网格
- ITK:提取网格边界上的顶点
- VTK:可视化之SceneBounds
- VTK:PolyData之TransformOrderDemo
- VTK:PolyData之ImplicitPolyDataDistance
- OpenCV gapi模块基本API的实例(附完整代码)
- OpenCV测量视频编码和解码的性能(附完整代码)