在实际工作中我们一般通过运行脚本时获取命令行的参数,有两种方式:
一、利用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_boolean('Boolean', True, 'the parameter of test boolean')
flags.DEFINE_string('testString', "String", 'The parameter of test string')
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函数
利用python的argparse包
argparse是python的命令行解析工具,可以在python代码中调用shell的一些命令。tensorflow的一些例子中用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)
例程完整代码如下
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)