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

TensorFlow tf.app&tf.app.flags用法介绍的更多相关文章

  1. 【转载】 TensorFlow tf.app&tf.app.flags用法介绍

    作 者:marsggbo 出 处:https://www.cnblogs.com/marsggbo版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. ---------- ...

  2. 【TensorFlow】tf.nn.embedding_lookup函数的用法

    tf.nn.embedding_lookup函数的用法主要是选取一个张量里面索引对应的元素.tf.nn.embedding_lookup(tensor, id):tensor就是输入张量,id就是张量 ...

  3. tensorflow中使用变量作用域及tf.variable(),tf,getvariable()与tf.variable_scope()的用法

    一 .tf.variable() 在模型中每次调用都会重建变量,使其存储相同变量而消耗内存,如: def repeat_value(): weight=tf.variable(tf.random_no ...

  4. TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用

    一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...

  5. tf.nn.embedding_lookup函数的用法

    关于np.random.RandomState.np.random.rand.np.random.random.np.random_sample参考https://blog.csdn.net/lanc ...

  6. tf.concat, tf.stack和tf.unstack的用法

    tf.concat, tf.stack和tf.unstack的用法 tf.concat相当于numpy中的np.concatenate函数,用于将两个张量在某一个维度(axis)合并起来,例如: a ...

  7. Tensorflow中的tf.argmax()函数

    转载请注明出处:http://www.cnblogs.com/willnote/p/6758953.html 官方API定义 tf.argmax(input, axis=None, name=None ...

  8. Tensorflow 学习笔记 -----tf.where

    TensorFlow函数:tf.where 在之前版本对应函数tf.select 官方解释: tf.where(input, name=None)` Returns locations of true ...

  9. python3 zip 与tf.data.Data.zip的用法

    ###python自带的zip函数 与 tf.data.Dataset.zip函数 功能用法相似 ''' zip([iterator1,iterator2,]) 将可迭代对象中对应的元素打包成一个元祖 ...

随机推荐

  1. PHP的简单工厂模式

    又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工厂模式中,可以根据参数的不同返回不同类的实例.简单工厂模式专门定义一个类来负责创建其他类的实例,被创建 ...

  2. python基础四-文件读取

    文件读取 open()接受一个参数:要打开的文件名, 并返回一个表示文件的对象, 存储到后面的变量中 python会在当前执行文件所在目录查找 可以使用绝对路径, 在linux中使用'/', 在win ...

  3. nginx 配置两个域名

    1.首先第一步安装: 参考:https://www.cnblogs.com/wyd168/p/6636529.html 启动: /usr/local/nginx/sbin/nginx -c /usr/ ...

  4. Windows7安装程序无法定位现有系统分区,也无法创建新的系统分区

    解决Windows7.Windows8系统安装时“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示. 方法一 把Windows7镜像发在你电脑的非系统盘的其他硬盘上. 重启机器,通过U盘启动 ...

  5. SSH整合redis和MongoDB错误笔记

    由于毕设中做的是图片搜索网站,选择前端框用SSH,因为之间接触过SSH框架,略有了解,但没有深究,现在在整合redis和mongodb的过程中遇到很多错误,也是十分痛苦,只能通过百度和一步步尝试着解决 ...

  6. (sort)P1068 分数线划定 洛谷

    题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,AA市对 所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根 据计划录取人数的150\% ...

  7. python自动化开发-[第九天]-异常处理、进程

    今日概要: 1.异常处理使用 2.进程 3.paramiko模块使用 一.异常处理 1.常见的错误异常 #错误异常一 print(a) #NameError #错误异常二 int('sdadsds') ...

  8. 利用 JMetal 实现大规模聚类问题的研究(一)JMetal配置

    研究多目标优化问题,往往需要做实验来对比效果,所以需要很多多目标方面的经典代码,比如NSGA-II, SPEA, MOEA,MOEA/D, 或者PSO等等. 想亲自实现这些代码,非常浪费时间,还有可能 ...

  9. HDFS 上文件块的副本数设置

    一.使用 setrep 命令来设置 # 设置 /javafx-src.zip 的文件块只存三份 hadoop fs -setrep /javafx-src.zip 二.文件块在磁盘上的路径 # 设置的 ...

  10. Web项目发布的更新

    在项目发版后经常需要修改bug,解决出现的各种问题,对项目升级,这时候就需要将之前部署,上线的项目更新版本. 本文就简单说一下一些出现的关键点(不到之处欢迎指教) 1.使用idea,eclipse等工 ...