TensorFlow学习笔记之--[tf.app.flags使用方法]
很多时候在运行python代码的时候我们需要从外部定义参数,从而避免每次都需要改动代码。所以一般我们都会使用 argparse 这个库。其实TensorFlow也提供了这个功能,那就是 tf.app.flags 。
使用方法很简单
tf.app.flags.DEFINE_boolean("param_name", "default_val", "description")
上面给出的是定义一个bool变量,第一个参数是指参数名,第二个是默认值,第三个是对该变量的描述,如果不想描述可以直接用 ""。
除了bool类,我们还可以定义其他的类型数据,如:
- tf.app.flags.DEFINE_integer
- tf.app.flags.DEFINE_float
- tf.app.flags.DEFINE_string
那么如何使用呢?完整示例(假设文件名为test.py)如下:
# coding=utf-8
import tensorflow as tf
flags = tf.app.flags
FLAGS = flags.FLAGS
tf.app.flags.DEFINE_integer('data', 10, "")
tf.app.flags.DEFINE_boolean("istrain", True, "")
def main(_):
print("{}".format(FLAGS.data))
print("{}".format(FLAGS.istrain))
if __name__ == '__main__':
tf.app.run()
5-6行:首先需要定义一个tf.app.flags,然后定义一个FLAGS,它是用来解析传入的参数的。
7-8行:定义了两个变量,分别是整型变量和bool型。
10-12行:注意使用tf.app.flags一般需要使用main函数作为入口,然后再仔细看main函数是需要传参数的(虽然不知道为什么),否则会出现如下报错信息:
Traceback (most recent call last):
File "d:/Code/AutoML/enas/testfiles/batch_test.py", line 19, in <module>
tf.app.run()
File "D:\Continuum\anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 125, in run
_sys.exit(main(argv))
TypeError: main() takes 0 positional arguments but 1 was given
所以我们可以传入一个无意义的 _ 来解决这个问题。
下面来看看如何运行这个文件:
python test.py --data 20
>>>
20
True
可以看到如果不穿入参数则按默认值处理,否则根据传入的值对变量进行更新。
另外对于bool型变量有个地方需要注意,因为bool只有True和False,所以无论bool变量默认值为True还是False,在变量面前加个no后都取False,,其他类型的没有这个特权,示例如下:
python test.py --nodata --noistrain
>>>
10
False
将istrain默认值设为False,运行结果和上面一样。
TensorFlow学习笔记之--[tf.app.flags使用方法]的更多相关文章
- tensorflow API _ 2 (tf.app.flags.FLAGS)
tf.app.flags.FLAGS 的使用,主要是在用命令行执行程序时,需要传些参数,代码如下:新建一个名为:app_flags.py 的文件. #coding:utf-8 import tens ...
- TensorFlow学习笔记之--[tf.clip_by_global_norm,tf.clip_by_value,tf.clip_by_norm等的区别]
以下这些函数可以用于解决梯度消失或梯度爆炸问题上. 1. tf.clip_by_value tf.clip_by_value( t, clip_value_min, clip_value_max, n ...
- TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]
I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...
- tensorflow入门笔记(一) tf.app.flags.FLAGS
tf.app.flags.DEFINE_xxx()就是添加命令行的optional argument(可选参数),而tf.app.flags.FLAGS可以从对应的命令行参数取出参数.举例如下: FL ...
- TensorFlow 学习(十三)—— tf.app.flags
flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_integer('num_hidden_layers', 3, 'number of hid ...
- TensorFlow tf.app&tf.app.flags用法介绍
TensorFlow tf.app&tf.app.flags用法介绍 TensorFlow tf.app argparse tf.app.flags 下面介绍 tf.app.flags.FL ...
- 【转载】 TensorFlow tf.app&tf.app.flags用法介绍
作 者:marsggbo 出 处:https://www.cnblogs.com/marsggbo版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本. ---------- ...
- tensorflow命令行参数:tf.app.flags.DEFINE_string、tf.app.flags.DEFINE_integer、tf.app.flags.DEFINE_boolean
tf 中定义了 tf.app.flags.FLAGS ,用于接受从终端传入的命令行参数,相当于对Python中的命令行参数模块optpars(参考:python中处理命令行参数的模块optpars)做 ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)
tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
随机推荐
- (计算几何基础 叉积) nyoj68-三点顺序
68-三点顺序 内存限制:64MB 时间限制:1000ms 特判: No通过数:27 提交数:43 难度:3 题目描述: 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断 ...
- 关于web-root和web-inf的用处
web-inf下的页面不能直接反问,必须通过servlet页面进行跳转,安全性高. web-root下的页面能直接通过地址栏来访问,安全性低. 哪些页面放在web-root下,哪些放在web-inf下 ...
- python自动化开发-[第十九天]-分页,cookie,session
今日概要: 1.cookie和session 2.csrf 跨站请求伪造 3.自定义分页 一.上节回顾: http请求的本质: - Http请求本质 浏览器(socket客户端): 2. socket ...
- Web API中的内容协商
一.内容协商的概念 HTTP规范将内容协商定义为“当有多个格式可用时为给定响应选择最佳格式的过程”.HTTP中内容协商的主要机制是这些请求标头: Accept:响应可接受哪些媒体类型,例如“appli ...
- Mysql:索引实战
MySQL主要提供2种方式的索引:B-Tree索引,Hash索引 B树索引具有范围查找和前缀查找的能力,对于有N节点的B树,检索一条记录的复杂度为O(LogN).相当于二分查找. 哈希索引只能做等于查 ...
- inux进程/线程调度策略与 进程优先级
目的: 系统性的认识linux的调度策略(SCHED_OTHER.SCHED_FIFO.SCHED_RR): 实时调度?分时调度? 混搭系统(实时任务+分时任务),怎样调度. linux的调度策略 l ...
- Dev-Tips
186 Chrome DevTools: How to use Logpoints for quicker JavaScript debugging You can use the new Logpo ...
- PHP7 学习笔记(十二)Stream 函数详解
官方:http://php.net/manual/zh/ref.stream.php Stream_*系列函数 PHP中对流的描述如下:每一种流都实现了一个包装器(wrapper),包装器包含一些额外 ...
- ArcGis辅助编号(半自动)功能的插件式实现
应邀写了一个ArcGis(ArcMap更确切一些)的辅助编号功能,其实只要想通了实现逻辑,实现的过程蛮简单的.相比挨个儿点要素写进编号或者借助“按键精灵”写入,直接操作宿主真是爽快得不能自已.无图言屌 ...
- Retrofit的通讯方式示例
Retrofit有两种通讯方式,同步和异步 异步方式: APIService req; req = RetrofitManager.getInstance().createReq(APIService ...