tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv。
执行main函数之前首先进行flags的解析,也就是说TensorFlow通过设置flags来传递tf.app.run()所需要的参数,我们可以直接在程序运行前初始化flags,也可以在运行程序的时候设置命令行参数来达到传参的目的。
对于tensorflow框架(接触的不多)含有
if __name__ == '__main__':
tf.app.run()
这样的格式是固定的,并且 tf.app.run()是直接找main函数,所以主函数的名字也是固定的
flags = tf.app.flags
FLAGS = flags.FLAGS
#以下定义了好多个flag,第一个是参数名称,第二个参数是默认值,第三个是参数描述
DEFINE_string(flag_name, default_value, docstring) # string类型
DEFINE_integer(flag_name, default_value, docstring) # int类型
DEFINE_boolean(flag_name, default_value, docstring) # Bool类型
DEFINE_float(flag_name, default_value, docstring) # float类型
例如:
第一个是参数名称,第二个参数是默认值,第三个是参数描述
flags.DEFINE_string('logdir', None,'Path to logdir.')
flags.DEFINE_string('input_image', None,'Image to apply KittiSeg.')
flags.DEFINE_string('output_image', None,'Image to apply KittiSeg.')
tf.app.flags.DEFINE_integer('int_name', 10,"descript2")
tf.app.flags.DEFINE_boolean('bool_name', False, "descript3")
flags.DEFINE_string('gpus', None,
('Which gpus to use. For multiple GPUs use comma seperated'
'ids. [e.g. --gpus 0,3]'))
if FLAGS.input_image is None:
logging.error("No input_image was given.")
logging.info(
"Usage: python demo.py --input_image data/test.png "
"[--output_image output_image] [--logdir /path/to/weights] "
"[--gpus GPUs_to_use] ")
exit(1)
传参的形式也是固定的:
# 对应上面设置的参数,传参的形式是:两个短横杠+参数名字+空格+要赋给参数的值--flag_name value
#传多个参数时,用空格隔开
--input_image data/demo.png --logdir /path/to/weights --gpus 0 --int_name 99 --bool_name True
关于tf.app.flags的详细参解https://blog.csdn.net/leiting_imecas/article/details/72367937