tf.app.flags
tf.app.flags主要用于处理命令行参数的解析工作,其实可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格式,类似于Json、XML)。
首先我们通过tf.app.flags
来调用这个flags.py
文件,这样我们就可以用flags.DEFINE_interger/float()
来添加命令行参数,而FLAGS=flags.FLAGS
可以实例化这个解析参数的类从对应的命令行参数取出参数。
新建test.py文件,并输入如下代码,代码的功能是创建几个命令行参数,然后把命令行参数输出显示
import tensorflow as tf
flags = tf.app.flags
flags.DEFINE_string('data_dir', '/tmp/mnist', 'Directory with the MNIST data.')
flags.DEFINE_integer('batch_size', 5, 'Batch size.')
flags.DEFINE_integer('num_evals', 1000, 'Number of batches to evaluate.')
FLAGS = flags.FLAGS
print(FLAGS.data_dir, FLAGS.batch_size, FLAGS.num_evals)
- 在命令行中输入
test.py -h
就可以查看帮助信息,也就是Directory with the MNIST data.
,Batch size
和Number of batches to evaluate
这样的消息。 - 在命令行中输入
test.py --batchsize 10
就可以将batch_size的值修改为10!
tf.app.run()
该函数一般都是出现在这种代码中:
if __name__ == '__main__':
tf.app.run()
上述第一行代码表示如果当前是从其它模块调用的该模块程序,则不会运行main函数!而如果就是直接运行的该模块程序,则会运行main函数。
flags_passthrough=f._parse_flags(args=args)
这里的parse_flags
就是我们tf.app.flags
源码中用来解析命令行参数的函数。所以这一行就是解析参数的功能;
下面两行代码也就是tf.app.run
的核心意思:执行程序中main函数,并解析命令行参数!
作者:DDM_dl
链接:https://www.jianshu.com/p/55cbd3753ee8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。