TensorFlow tf.app&tf.app.flags用法介绍

TensorFlow tf.app argparse 

tf.app.flags

下面介绍 tf.app.flags.FLAGS的使用,主要是在用命令行执行程序时,需要传些参数,其实也就可以理解成对argparse库进行的封装,示例代码如下

  1. #coding:utf-8 


  2. # 学习使用 tf.app.flags 使用,全局变量 

  3. # 可以再命令行中运行也是比较方便,如果只写 python app_flags.py 则代码运行时默认程序里面设置的默认设置 

  4. # 若 python app_flags.py --train_data_path <绝对路径 train.txt> --max_sentence_len 100 

  5. # --embedding_size 100 --learning_rate 0.05 代码再执行的时候将会按照上面的参数来运行程序 


  6. import tensorflow as tf 


  7. FLAGS = tf.app.flags.FLAGS 


  8. # tf.app.flags.DEFINE_string("param_name", "default_val", "description") 

  9. tf.app.flags.DEFINE_string("train_data_path", "/desktop/train.txt", "training data dir") 

  10. tf.app.flags.DEFINE_string("log_dir", "./logs", " the log dir") 

  11. tf.app.flags.DEFINE_integer("max_sentence_len", 80, "max num of tokens per query") 

  12. tf.app.flags.DEFINE_integer("embedding_size", 50, "embedding size") 


  13. tf.app.flags.DEFINE_float("learning_rate", 0.001, "learning rate") 



  14. def main(unused_argv): 

  15. train_data_path = FLAGS.train_data_path 

  16. print("train_data_path", train_data_path) 

  17. print("*" * 30) 

  18. max_sentence_len = FLAGS.max_sentence_len 

  19. print("max_sentence_len", max_sentence_len) 

  20. print("*" * 30) 

  21. embdeeing_size = FLAGS.embedding_size 

  22. print("embedding_size", embdeeing_size) 

  23. print("*" * 30) 

  24. abc = tf.add(max_sentence_len, embdeeing_size) 


  25. init = tf.global_variables_initializer() 


  26. with tf.Session() as sess: 

  27. sess.run(init) 

  28. print("abc", sess.run(abc)) 


  29. # 使用这种方式保证了,如果此文件被其他文件 import的时候,不会执行main 函数 

  30. if __name__ == '__main__': 

  31. tf.app.run() # 解析命令行参数,调用main 函数 main(sys.argv) 



两种调用方式:

方式一:

  1. python tf_app_flag.py 

结果如下:

方式二:

  1. python app_flags.py --train_data_path ./test.py --max_sentence_len 100 --embedding_size 100 --learning_rate 0.05 


tf.app.run()

该函数一般都是出现在这种代码中:

  1. if __name__ == '__main__': 

  2. tf.app.run() 

上述第一行代码表示如果当前是从其它模块调用的该模块程序,则不会运行main函数!而如果就是直接运行的该模块程序,则会运行main函数。

具体第二行的功能从源码开始分析,源码如下:

flags_passthrough=f._parse_flags(args=args)这里的parse_flags就是我们tf.app.flags源码中用来解析命令行参数的函数。所以这一行就是解析参数的功能;

下面两行代码也就是tf.app.run的核心意思:执行程序中main函数,并解析命令行参数!


参考:

MARSGGBO♥原创







2018-8-5

最新文章

  1. Yii2 使用a标签发送post请求
  2. 【转载】FLUNT温度场模拟
  3. VMware-workstation-full-10.0.3-1895310 CN
  4. FZU 2216 The Longest Straight 二分
  5. LittleTools之网格输出为模型
  6. sdaf
  7. git 远程分支创建与推送
  8. textContent和innerHtml
  9. 关于 tomcat 配置时遇到的问题与警告及解决办法
  10. 单点登录实现机制:桌面sso
  11. Jmeter 后置处理器JSON Extractor 提取json的多个值
  12. 适用于app.config与web.config的ConfigUtil读写工具类
  13. BZOJ1439 : YY的问题
  14. centos7不小心删除了/etc/yum.repos.d/CentOS-Base.repo文件..........
  15. HTTP请求代码整理
  16. Ubuntu 14.10 下编译Hadoop2.4.0
  17. linux(ubuntu) 开发环境配置
  18. 关于Unity中的声音管理模块(专题七)
  19. only_full_group_by问题而引发的对group by的深入思考
  20. 运行Rails server时,出 Error:Address already in use错误

热门文章

  1. PHP工厂方法模式
  2. rest_framework学习之路
  3. sed 的|
  4. 【.net】未能加载文件或程序集“System.Web.Mvc, Version=5.2.2.0
  5. python 包和模块间的引入
  6. Mark标记功能的实现(像手工标记的一样)
  7. Emacs 快速指南(中文翻译)
  8. HDU 1034(传递糖果 模拟)
  9. python+selenium 模拟登陆,自动下单
  10. asp.net上传图片,上传图片