tensorflow

tf.app.flags主要用于处理命令行参数的解析工作,可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格式,类似于Json、XML)

1.导入了argparse

tensorflow

2.创建一个解析器对象,argparse中的解析器类是ArgumentParser

tensorflow

3.定义_FlagValue类

  要处理命令行参数,就要用解析器类_global_parser里的方法来解析,这里使用了parse_known_args()函数

  函数返回的”result“是参数解析完的数据,而”unparsed“是未被解析的参数list。

  将命令行传入的命令和解析出来的数据以字典的形式放到__dict__['_flags']这个字典中,方便后续调用。

tensorflow

4.设置和获得解析的命令行参数,setattr/getattr

 获取参数,除了要判断参数是否在字典里的基本要求外,还要判断有没有解析过参数

 如果没有就运行_parse_flags解析参数,如果有,那么self.__dict__[‘__parsed’]就会为True。

tensorflow

5.实例化——FlagValues类

tensorflow

6.定义_define_helper方法

 _define_helper函数中调用了_global_parser.add_argument完成对命令行参数的添加(传入flag_name,default_value,docstring,flagtype参数)

   添加参数使用的是解析器类_global_parser的方法

   第一个参数是‘--’+flag_name这个表示定义的命令行参数使用时必须以‘--’开头

   第二个参数default_value是参数的默认值

   第三个参数docstring保存帮助信息

   第四个参数表示限定了赋予命令行参数数据的类型

tensorflow

7. DEFINE_string方法

    由于_define_helper()最后一个type参数是str,说明DEFINE_string()限定了可选参数输入必须是string

tensorflow

8. mark_flags_as_required方法

   在程序运行前先将某些命令行参数加入到”必备参数“(__required_flags)的字典中,以判断解析完的参数是否满足这些必备要求

   mark_flags_as_required方法会调用mark_flag_as_required方法,来将当前传入的参数加入到__required_flags字典中(_add_required_flag方法)

  tensorflow

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()
 

   

上一篇:深度学习图像识别 植物图像识别及其可视化界面设计


下一篇:芯灵思Sinlinx A64开发板 Linux内核等待队列poll ---阻塞与非阻塞