tf.app.flags主要用于处理命令行参数的解析工作,可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格式,类似于Json、XML)
1.导入了argparse
包
2.创建一个解析器对象,argparse
中的解析器类是ArgumentParser
3.定义_FlagValue类
要处理命令行参数,就要用解析器类_global_parser里的方法来解析,这里使用了parse_kNown_args()
函数
函数返回的”result“是参数解析完的数据,而”unparsed“是未被解析的参数list。
将命令行传入的命令和解析出来的数据以字典的形式放到__dict__
的['_flags']
这个字典中,方便后续调用。
4.设置和获得解析的命令行参数,setattr/getattr
获取参数,除了要判断参数是否在字典里的基本要求外,还要判断有没有解析过参数
如果没有就运行_parse_flags
解析参数,如果有,那么self.__dict__[‘__parsed’]
就会为True。
5.实例化——FlagValues类
6.定义_define_helper方法
_define_helper
函数中调用了_global_parser.add_argument
完成对命令行参数的添加(传入flag_name,default_value,docstring,flagtype参数)
第一个参数是‘--’+flag_name这个表示定义的命令行参数使用时必须以‘--’开头
第二个参数default_value
是参数的默认值
第三个参数docstring
保存帮助信息
第四个参数表示限定了赋予命令行参数数据的类型
7. DEFINE_string方法
由于_define_helper()
最后一个type参数是str,说明DEFINE_string()
限定了可选参数输入必须是string
在程序运行前先将某些命令行参数加入到”必备参数“(__required_flags
)的字典中,以判断解析完的参数是否满足这些必备要求
mark_flags_as_required
方法会调用mark_flag_as_required
方法,来将当前传入的参数加入到__required_flags
字典中(_add_required_flag
方法)
9. 使用tensorflow
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
if __name__ == '__main__':
tf.app.run()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。