tensorflow 定义了tf.app.flags,它是用来支持接受命令行传递参数,相当于接受argv,其中tf.app.flags.DEFINE_xx()用来添加命令行的optional argument(可选参数),而tf.app.flags.FLAGS可以从对应的命令行参数取出相应的参数。
看代码:
import tensorflow as tf
FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_float(
'image_width', 534.8, 'input a float')
tf.app.flags.DEFINE_float(
'image_height', 256.8, 'input a float')
tf.app.flags.DEFINE_integer(
'image_nums', 100, 'input a int')
tf.app.flags.DEFINE_boolean(
'Tureornot', True, 'input a bool')
tf.app.flags.DEFINE_string(
'str', 'it is a batch', 'input a string')
print(FLAGS.image_width)
print(FLAGS.image_height)
print(FLAGS.image_nums)
print(FLAGS.Tureornot)
print(FLAGS.str)
输出结果:
534.8
256.8
100
True
it is a batch
命令行执行示例:
其实, 这就是对python原生命令行参数的一个封装,我们也可以用原生的方法:
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--task', type=str, default='all', help='all, necrotic, edema, enhance')
args = parser.parse_args()
main(args.task)