TensorFlow tf.app&tf.app.flags用法介绍
TensorFlow tf.app&tf.app.flags用法介绍
tf.app.flags
下面介绍 tf.app.flags.FLAGS的使用,主要是在用命令行执行程序时,需要传些参数,其实也就可以理解成对argparse库进行的封装,示例代码如下
- #coding:utf-8
- # 学习使用 tf.app.flags 使用,全局变量
- # 可以再命令行中运行也是比较方便,如果只写 python app_flags.py 则代码运行时默认程序里面设置的默认设置
- # 若 python app_flags.py --train_data_path <绝对路径 train.txt> --max_sentence_len 100
- # --embedding_size 100 --learning_rate 0.05 代码再执行的时候将会按照上面的参数来运行程序
- import tensorflow as tf
- FLAGS = tf.app.flags.FLAGS
- # tf.app.flags.DEFINE_string("param_name", "default_val", "description")
- tf.app.flags.DEFINE_string("train_data_path", "/desktop/train.txt", "training data dir")
- tf.app.flags.DEFINE_string("log_dir", "./logs", " the log dir")
- tf.app.flags.DEFINE_integer("max_sentence_len", 80, "max num of tokens per query")
- tf.app.flags.DEFINE_integer("embedding_size", 50, "embedding size")
- tf.app.flags.DEFINE_float("learning_rate", 0.001, "learning rate")
- def main(unused_argv):
- train_data_path = FLAGS.train_data_path
- print("train_data_path", train_data_path)
- print("*" * 30)
- max_sentence_len = FLAGS.max_sentence_len
- print("max_sentence_len", max_sentence_len)
- print("*" * 30)
- embdeeing_size = FLAGS.embedding_size
- print("embedding_size", embdeeing_size)
- print("*" * 30)
- abc = tf.add(max_sentence_len, embdeeing_size)
- init = tf.global_variables_initializer()
- with tf.Session() as sess:
- sess.run(init)
- print("abc", sess.run(abc))
- # 使用这种方式保证了,如果此文件被其他文件 import的时候,不会执行main 函数
- if __name__ == '__main__':
- tf.app.run() # 解析命令行参数,调用main 函数 main(sys.argv)
两种调用方式:
方式一:
- python tf_app_flag.py
结果如下:

方式二:
- python app_flags.py --train_data_path ./test.py --max_sentence_len 100 --embedding_size 100 --learning_rate 0.05

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函数,并解析命令行参数!
参考:
TensorFlow tf.app&tf.app.flags用法介绍的更多相关文章
- 【转载】 TensorFlow tf.app&tf.app.flags用法介绍
作 者:marsggbo 出 处:https://www.cnblogs.com/marsggbo版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. ---------- ...
- 【TensorFlow】tf.nn.embedding_lookup函数的用法
tf.nn.embedding_lookup函数的用法主要是选取一个张量里面索引对应的元素.tf.nn.embedding_lookup(tensor, id):tensor就是输入张量,id就是张量 ...
- tensorflow中使用变量作用域及tf.variable(),tf,getvariable()与tf.variable_scope()的用法
一 .tf.variable() 在模型中每次调用都会重建变量,使其存储相同变量而消耗内存,如: def repeat_value(): weight=tf.variable(tf.random_no ...
- TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用
一.TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载cs ...
- tf.nn.embedding_lookup函数的用法
关于np.random.RandomState.np.random.rand.np.random.random.np.random_sample参考https://blog.csdn.net/lanc ...
- tf.concat, tf.stack和tf.unstack的用法
tf.concat, tf.stack和tf.unstack的用法 tf.concat相当于numpy中的np.concatenate函数,用于将两个张量在某一个维度(axis)合并起来,例如: a ...
- Tensorflow中的tf.argmax()函数
转载请注明出处:http://www.cnblogs.com/willnote/p/6758953.html 官方API定义 tf.argmax(input, axis=None, name=None ...
- Tensorflow 学习笔记 -----tf.where
TensorFlow函数:tf.where 在之前版本对应函数tf.select 官方解释: tf.where(input, name=None)` Returns locations of true ...
- python3 zip 与tf.data.Data.zip的用法
###python自带的zip函数 与 tf.data.Dataset.zip函数 功能用法相似 ''' zip([iterator1,iterator2,]) 将可迭代对象中对应的元素打包成一个元祖 ...
随机推荐
- maomao的现在与未来
今晚开始,maomao决定要成为一个和以前不一样的人了. 自从高一开始竞赛生涯以来,我的竞赛就一直处于不是很好,也不是很差的水平,就像我初中一年级到二年级一直处于的状态一样.一直以来,我从来没有对自己 ...
- 关键字(5):cursor游标:(循环操作批量数据)
declare cursor stus_cur is select * from students; --定义游标并且赋值(is 不能和cursor分开使用) cur_stu studen ...
- C# 封装SqlBulkCopy,让批量插入更方便
关于 SqlServer 批量插入的方式,前段时间也有大神给出了好几种批量插入的方式及对比测试(http://www.cnblogs.com/jiekzou/p/6145550.html),估计大家也 ...
- 三台机器之间root用户ssh互信配置
三台机器之间root用户ssh互信配置 (1)在所有的主机上执行:ssh-keygen -t rsa # 在每台都需要操作,一路回车 (2)将所有机子上公钥(id_rsa.pub)导到一个主机的/ro ...
- BZOJ2006 ST表 + 堆
https://www.lydsy.com/JudgeOnline/problem.php?id=2006 题意:在长度N的序列中求K段长度在L到R之间的区间,使得他们的和最大 很容易想到要求一个前缀 ...
- ATPCS规则
title: ATPCS规则 tags: ARM date: 2018-10-14 17:03:23 --- ATPCS规则 ARM指令集E004armproc.chm ATPCS介绍与使用.pdf ...
- Java动态代理之JDK实现和CGlib实现(简单易懂)
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6542259.html 一:代理模式(静态代理) 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是 ...
- Javascript的作用域和闭包(一)
一.作用域是什么? 几乎所有的编程语言最基本的功能之一,就是能够存储变量的值,并且能访问和修改这些值. 修改变量值的过程我们通常在程序执行时,称为改变一个对象的状态.有了状态,让程序变得有非常有趣. ...
- Golang入门教程(七)基本数据类型使用案例
18种基本数据类型使用 代码案例1 package main import "fmt" func main() { //使用 var 定义一个布尔类型并且初始化 var flag ...
- 关于Unicode
http://www.unicode.org/faq/utf_bom.html 有关UTF或编码表单的一般问题 Unicode是16位编码吗? Unicode文本可以以多种方式表示吗? 什么是UTF? ...