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函数,并解析命令行参数!
参考:
MARSGGBO原创
2018-8-5
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript—数组(17)
数组 数组是值的有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 JavaScript数组的索引是基于零的32位数值,第一个元素索引为0,数组最大能容纳4294967295(即2^32-1)个元素。 JavaScript数组是动态的,根据需要它们会增长或缩减,并且在创建数组时无需声明一个固定的大小或者在数组大小变化时无需重新分配空间。 JavaScript数组可能是稀疏的,数组元素的索引不一定要连续的,它们之间可以有空缺。 每个JavaScript数组都有一个length属性,针对非稀疏数组,该属性就是数组元素的个数。针对稀疏数组,length比所有元素的索引都要大。 创建数组1、最简单的方法是使用数组直接量(字面量)创建数组。 var empty = []; //没有元素的数组 var arr = [1.1, true, "a",]; //3个不同类型的元素和结尾的逗号 数组直接量中的值也不一定必须是常量,它们可以是任意的表达式: var number = 1; var list = [number, number+1, number+2]; 如果省...
- 下一篇
html2canvas+jQuery+SpringMVC 实现网页转图片并保存到服务器
前端使用的是 RequireJS + jQuery 后端使用的是 SpringMVC + MyBatis 更多精彩 更多技术博客,请移步 asing1elife's blog 涉及资料 html2canvas 官网 将转换后的图片存储服务器的参考 将网页转换为图片 下载插件包 html2canvas 目前最新版是 v-1.0.0-aplha.12 ,该版本使用的是 ES6 语法 但本项目使用的是 jQuery ,并且基于 ES5 的语法,所以引入最新版插件时会一直报错 Uncaught (in promise) 对于没有使用的 ES6 语法的项目,建议下载 2017 年的版本,本文使用的是 v-0.5.0-beta4 调用插件进行转换 最新版及官网介绍的方法是基于 ES6 的语法结构,对于使用 ES5 语法的项目,需要使用如下方法 方法第一个参数是传入 DOM 元素,而通过 jQuery 获取的 DOM 元素实际上是一个集合,所以需要通过下标指定具体元素后插件才能正常获取 方法第二个参数是传入 options 配置,对于 ES5 语法需要使用 onrendered: function(...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果