您的位置:首页 > 移动开发

tf.app.flags.DEFINE_string()和tf.app.flags.FLAGS和tf.app.run()

2018-03-27 09:49 555 查看

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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: