很多时候在运行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,运行结果和上面一样。

微信公众号:AutoML机器学习

MARSGGBO♥原创

如有意合作或学术讨论欢迎私戳联系~
邮箱:marsggbo@foxmail.com


2018-12-3

TensorFlow学习笔记之--[tf.app.flags使用方法]的更多相关文章

  1. tensorflow API _ 2 (tf.app.flags.FLAGS)

    tf.app.flags.FLAGS 的使用,主要是在用命令行执行程序时,需要传些参数,代码如下:新建一个名为:app_flags.py 的文件. #coding:utf-8  import tens ...

  2. 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 ...

  3. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...

  4. tensorflow入门笔记(一) tf.app.flags.FLAGS

    tf.app.flags.DEFINE_xxx()就是添加命令行的optional argument(可选参数),而tf.app.flags.FLAGS可以从对应的命令行参数取出参数.举例如下: FL ...

  5. TensorFlow 学习(十三)—— tf.app.flags

    flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_integer('num_hidden_layers', 3, 'number of hid ...

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

    TensorFlow tf.app&tf.app.flags用法介绍 TensorFlow tf.app argparse  tf.app.flags 下面介绍 tf.app.flags.FL ...

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

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

  8. 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)做 ...

  9. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...

随机推荐

  1. POJ 3687 Labeling Balls (top 排序)

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15792   Accepted: 4630 D ...

  2. Mac idea中git igenore设置

  3. falsk简单项目示例

    目录结构: 源码及分析 https://github.com/freshman411/Flask_test/

  4. Golang的排序和查找

    Golang的排序和查找 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.排序的基本介绍 排序是将一组数据,依指定的顺序进行排列的过程.排序的分类如下 1>.内部排序 指将 ...

  5. mysql 快速生成删除数据库中所有的表的语句

    SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_s ...

  6. python django基础二URL路由系统

    URL配置 基本格式 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数 ...

  7. PHP中的表单传值

     前言:试想一下如果PHP没有了表单传值,那么就相当于一个没有表达能力的人,因此表单传值在php中是相当重要的,但是不难,接下来我们一起来探讨一下吧------> (一)什么是表单传值 概念:表 ...

  8. 微信、支付宝支付SDK

    1.首先是下载SDK,其对应的SDK在mvn上下载不了,需要手动配置到仓库 支付宝SDK下载地址 https://docs.open.alipay.com/54/103419 微信SDK官方下载地址  ...

  9. minio golang client使用

    初始化 var ( endpoint = "127.0.0.1:8888" accessKeyID = "YXU5IXETKKPX171K4Z6O" secre ...

  10. 2016vijos 6-1 松鼠聚会(LCA+卡空间)

    求LCA,N=1e6,原空间限制8MB 求LCA需要深度,需要跳跃一定距离的祖先,需要父节点 把一个整数压成3个char,f[]存父节点 g[],深度为奇数的点存往上跳576步能到的点,深度为偶数的点 ...