《智能系统与技术丛书 深度学习实践:基于Caffe的解析》—2.8.4安装gflags

举报
华章计算机 发表于 2019/06/02 15:27:33 2019/06/02
【摘要】 本书摘自《智能系统与技术丛书 深度学习实践:基于Caffe的解析》一文中的第2章,第2.8.4节,作者是薛云峰。

2.8.4 安装gflags

       首先下载gflags的发布版,下载地址为https://github.com/gflags/gflags/releases。大家可以选择任意版本,这里以下载2.2.0版为例,2.2.0版本的具体下载地址为https://github.com/gflags/gflags/archive/v2.2.0.tar.gz,此版本发布于2016年12月。

       这里将gflags下载到D:\workCode\gflags-2.2.0目录下,下面来看一下如何使用cmake建立这个库的工程,具体步骤如下。

       首先,选择需要构建的工程版本,这里选择VS2015 Win64,因为我们要为Caffe做基础库,所以需要选择64位的版本,如图2-69所示。

image.png

       这样就进入了生成工程的具体的操作步骤。我们可以看到,图2-70显示了VS2015的安装路径。

image.png

图 2-70

       等待几秒钟之后就可以看到Configuring done,然后点击图2-71中的“Generate”按钮,等待出现Generating Done。

image.png

图 2-71

       接下来点击“Open Project”按钮,打开VS工程,然后编译Solution,如图2-72所示。

image.png

图 2-72

       点击编译之后,正常情况下是会显示如图2-73所示的编译过程,最后会显示编译成功。

image.png

图 2-73

       编译之后可以生成如图2-74所示的目录,Debug和Release分别是调试和发布的库,可以根据需要进行连接。

image.png

图 2-74

       gflags一般用于解析命令行参数。下面来看一段具体的示例小程序,这里是将下面的程序编译成一个演示用的小的运行文件。

#include <iostream>

#include <gflags/gflags.h>

 

using namespace std;

 

DEFINE_string(conf_path, "../conf/setup.property", "program configure file.");

DEFINE_int32(port, 10080, "program listen port");

DEFINE_bool(test_bool, true, "run test_bool mode");

 

int main(int argc, char** argv)

{

    gflags::ParseCommandLineFlags(&argc, &argv, true);

 

    cout << "confPath = " << FLAGS_ conf_path << endl;

    cout << "port = " << FLAGS_port << endl;

 

    if (FLAGS_ test_bool) {

        cout << "run background ..." << endl;

    }

    else {

        cout << "run foreground ..." << endl;

    }

 

    cout << "Good bye!" << endl;

 

    gflags::ShutDownCommandLineFlags();

    return 0;

}

     (1)设定命令行参数

       直接运行所得到的就是设定的默认参数(结合代码仔细一看,就能知道参数的默认值了)。

       设定参数默认值的方式具体如下。

       1)可以用“–参数名=参数值”的方式来设定参数值。

       02)对于bool类型的参数,除了上述方式外,还可以用“–参数名”的方式设定为true(即不带值), 使用“–no参数名”的方式设定为false。

       不过,为了统一,建议都使用前面给出的第1种方法来设定参数。

       下面给出调用前面那个小程序所得到的一些结果:

./demo --port=8888 --confPath=./setup.ini --test_bool =true  

confPath = ./setup.property

port = 8888

run background ...

Good bye!

./demo -port=8888 -confPath=./setup.ini -test_bool =false

confPath = ./setup.property

port = 8888

run foreground ...

Good bye!

./demo -port=8888 -confPath=./setup.ini -test_bool

confPath = ./setup.property

port = 8888

run background ...

Good bye!

./demo -port=8888 -confPath=./setup.ini -notest_bool

confPath = ./setup.property

port = 8888

run foreground ...

Good bye!

     (2)从文件读入“命令行”参数

       如果我们的程序比较复杂,配置项非常多,也就是说命令行参数很多,每次启动都要一个一个地输入,那岂不是极其麻烦?事实上,gflags已经帮我们解决了,用“ –flagfile=命令行文件”的方式就可以了。下面给出一个例子,新建一个param.cmd文件,param.cmd就是上面所说的命令行文件,具体内容如下:

--port=8888

--confPath=./setup.property

--daemon=true

      然后键入命令“./demo --flagfile=param.cmd”,得到的结果具体如下所示:

./demo --flagfile=param.cmd

confPath = ./setup.property

port = 8888

run foreground ...

Good bye!

       到此,关于gflags的内容就介绍完毕了。Caffe依赖Boost、LMDB、LevelDB、glog、gflags、OpenCV、BLAS等库,其中Boost库最为庞大,功能也最多,OpenCV专注于计算机视觉,LMDB和LevelDB是两个高性能的内存数据库,BLAS最小,主要专注于完成矩阵运算,glog完成日志功能,gflags处理命令行参数解析,这些库我们在其他工程中也可以使用,接下来还是开始Caffe的使用之旅吧。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。