flag的具体用法python_[干货|实践] Tensorflow学习 - 使用flags定义命令行参数

/* 版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/

faiculty: 机器学习、计算机视觉交流群:451429116

微信公众号、知乎专栏、简书,请搜索: faiculty

本专栏主要为学习记录,可能综合了网上各类文章或博客,如有侵权请联系本人进行删除。

QQ:769412850.

非常期待各位同学投稿,一起学习。

学习目的:深度学习神经网络往往有过多的Hyperparameter需要调优,优化算法、学习率、卷积核尺寸等很多参数都需要不断调整,使用命令行参数是非常方便的。有两种实现方式,一是利用python的argparse包,二是调用tensorflow自带的app.flags实现。

利用tf.app.flags组件

tf定义了tf.app.flags,用于接受命令行传递参数,相当于接受argv。首先调用自带的DEFINE_string,DEFINE_boolean DEFINE_integer, DEFINE_float设置不同类型的命令行参数及其默认值。当然,也可以在终端用命令行参数修改这些默认值。

其中参数描述为:

第一个参数第二个参数第三个参数参数名称默认值参数描述

import tensorflow as tf

flags = tf.app.flags

############################

# hyper parameters #

############################

# For separate margin loss

flags.DEFINE_float('m_plus', 0.9, 'the parameter of m plus')

flags.DEFINE_float('m_minus', 0.1, 'the parameter of m minus')

flags.DEFINE_float('lambda_val', 0.5, 'down weight of the loss for absent digit classes')

FLAGS = tf.app.flags.FLAGS

def main(_):

print(FLAGS.m_plus)

print(FLAGS.m_minus)

print(lambda_val)

if __name__ == '__main__':

tf.app.run() #执行main函数

执行:

root:~/Tensorflowexample$ python flags_example.py

0.9

0.1

0.5

root:~/Tensorflowexample$ python flags_example.py

root:~/Tensorflowexample$ python flags_example.py --m_plus 1.0 --m_minus 0.2 --lambad_val 0.9

1.0

0.2

0.5

利用python的argparse包

argparse是python的命令行解析工具,或者说可以在python代码中调用shell的一些命令,从而简化和系统命令之间的交互。tensorflow的一些例子中用argparse来定义一些默认命令,通常是全局变量,也是用作和系统命令之间交互的全局设置。详细介绍参考The Python Standard Library中argparse介绍具体编程时,argparse包的使用方法如下:

1,导入argparse模块

import argparse

2. 创建解析器对象ArgumentParser,可以添加参数

parser=argparse.ArgumentParser(description="This is a example program ")

3. add_argument()方法,用来指定程序需要接受的命令参数

parser.add_argument("--echo",type=str,default='hi',dest='m',help="echo the string you use here")

parser.add_argument("--square",type=int,default= 9 ,dest='n',help="display a square of a given number")

args = parser.parse_args()

定位参数:

parser.add_argument("echo",help="echo the string")

可选参数: 在执行程序的时候,定位参数必选,可选参数可选。

add_argument()常用的参数:dest:如果提供dest,例如dest="a",那么可以通过args.a访问该参数

print(args.m)

print(args.n)default:设置参数的默认值 action:参数触发的动作 store:保存参数,默认 store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。 store_ture/store_false:保存相应的布尔值 append:将值保存在一个列表中。 append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。

count:参数出现的次数

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

version:打印程序版本信息 type:把从命令行输入的结果转成设置的类型 choice:允许的参数值parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

help:参数命令的介绍

例程完整代码如下

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--echo",type=str,default='hi',dest='m',help="echo the string you use here")

parser.add_argument("--square",type=int,default= 9 ,dest='n',help="display a square of a given number")

args = parser.parse_args()

print(args.m)

print(args.n)

执行:

root:~/Tensorflowexample$ python argparse_example.py

hi

9

root:~/Tensorflowexample$ python argparse_example.py --echo 'hello' --square 4

hello

4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值