TensorFlow定义了tf.app.flags,用于支持接受命令行传递参数,默认支持四种类型:
tf.app.flags.DEFINE_boolean
tf.app.flags.DEFINE_string
tf.app.flags.DEFINE_integer
tf.app.flags.DEFINE_float
四种类型都接受三个入参分别为:("param_name", "default_val", "description"),下面是一个测试例子,供参考:
import tensorflow as tf
FLAGS = tf.app.flags.FLAGS
# tf.app.flags.DEFINE_string("param_name", "default_val", "description")
tf.app.flags.DEFINE_boolean('boolean_arg_0', True,'boolean_description_0')
tf.app.flags.DEFINE_boolean('boolean_arg_1', False,'boolean_description_1')
tf.app.flags.DEFINE_string("string_arg_0", "string_val_0", "string_description_0")
tf.app.flags.DEFINE_string("string_arg_1", "string_val_1", "string_description_1")
tf.app.flags.DEFINE_integer("integer_arg_0", 0, "integer_description_0")
tf.app.flags.DEFINE_integer("integer_arg_1", 1, "integer_description_1")
tf.app.flags.DEFINE_float("float_arg_0", 0.0, "float_description_0")
tf.app.flags.DEFINE_float("float_arg_1", 1.0, "float_description_1")
def main(unused_argv):
print("*" * 30)
boolean_arg_0 = FLAGS.boolean_arg_0
print("boolean_arg_0", boolean_arg_0)
print("*" * 30)
boolean_arg_1 = FLAGS.boolean_arg_1
print("boolean_arg_1", boolean_arg_1)
print("*" * 30)
string_arg_0 = FLAGS.string_arg_0
print("string_arg_0", string_arg_0)
print("*" * 30)
string_arg_1 = FLAGS.string_arg_1
print("string_arg_1", string_arg_1)
print("*" * 30)
integer_arg_0 = FLAGS.integer_arg_0
print("integer_arg_0", integer_arg_0)
print("*" * 30)
integer_arg_1 = FLAGS.integer_arg_1
print("integer_arg_1", integer_arg_1)
print("*" * 30)
float_arg_0 = FLAGS.float_arg_0
print("float_arg_0", float_arg_0)
print("*" * 30)
float_arg_1 = FLAGS.float_arg_1
print("float_arg_1", float_arg_1)
integer_add = tf.add(integer_arg_0, integer_arg_1)
float_add = tf.add(float_arg_0, float_arg_1)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print("integer_add", sess.run(integer_add))
print("float_add", sess.run(float_add))
if __name__ == '__main__':
tf.app.run()
使用举例:
1. test_app_args.py -h 当用-h参数时,不运行脚本的逻辑处理代码,只是输出我们定义的参数默认值以及参数描述;
2. test_app_args.py 不指定任何参数时, 脚本会使用默认参数运行脚本的逻辑处理代码;
3. test_app_args.py --boolean_arg_0=False 当指定某一些参数时,指定参数值会覆盖默认参数值,并使用新的参数值运行脚本 的逻辑处理代码。