最近看复现的代码,看到代码里有FLAGS=tf.flags.FLAGS等语句,看不明白,查寻之余发现,这类语句在使用Tensorflow框架的项目里是常见的。并且在看代码解释时,找到一个博主关于这部分只是的梳理,有解释加示例非常清楚,所以就直接应用该作者的文章。

--------------------------------------------=--------------------------------------------------------------------
内容包含如下几个我们经常看到的几个函数:

①tf.flags.DEFINE_xxx()
②FLAGS = tf.flags.FLAGS
③FLAGS._parse_flags()

简单的说:
   用于帮助我们添加命令行的可选参数。也就是说可以不用反复修改源代码中的参数,而是利用该函数可以实现在命令行中选择需要设定或者修改的参数来运行程序。

举个栗子:
程序train.py文件中的小部分代码如下所示:

FLAGS = tf.flags.FLAGStf.flags.DEFINE_string('name', 'default', 'name of the model')
tf.flags.DEFINE_integer('num_seqs', 100, 'number of seqs in one batch')
tf.flags.DEFINE_integer('num_steps', 100, 'length of one seq')
tf.flags.DEFINE_integer('lstm_size', 128, 'size of hidden state of lstm')
tf.flags.DEFINE_integer('num_layers', 2, 'number of lstm layers')
tf.flags.DEFINE_boolean('use_embedding', False, 'whether to use embedding')
tf.flags.DEFINE_integer('embedding_size', 128, 'size of embedding')
tf.flags.DEFINE_float('learning_rate', 0.001, 'learning_rate')
tf.flags.DEFINE_float('train_keep_prob', 0.5, 'dropout rate during training')
tf.flags.DEFINE_string('input_file', '', 'utf8 encoded text file')
tf.flags.DEFINE_integer('max_steps', 100000, 'max steps to train')
tf.flags.DEFINE_integer('save_every_n', 1000, 'save the model every n steps')
tf.flags.DEFINE_integer('log_every_n', 10, 'log to the screen every n steps')
tf.flags.DEFINE_integer('max_vocab', 3500, 'max char number')

在命令行中我们执行train.py文件,在命令行中输入:

python train.py \--input_file data/shakespeare.txt  \         --name shakespeare \--num_steps 50 \--num_seqs 32 \--learning_rate 0.01 \--max_steps 20000

通过输入不同的文件名、参数,可以快速完成程序的调参和加载训练集的操作,不需要进入源码中更改。

实践操作

现在我们有如下代码:

import tensorflow as tf
#取上述代码中一部分进行实验
tf.flags.DEFINE_integer('num_seqs', 100, 'number of seqs in one batch')
tf.flags.DEFINE_integer('num_steps', 100, 'length of one seq')
tf.flags.DEFINE_integer('lstm_size', 128, 'size of hidden state of lstm')#通过print()确定下面内容的功能
FLAGS = tf.flags.FLAGS #FLAGS保存命令行参数的数据
FLAGS._parse_flags() #将其解析成字典存储到FLAGS.__flags中
print(FLAGS.__flags)print(FLAGS.num_seqs)print("\nParameters:")
for attr, value in sorted(FLAGS.__flags.items()):print("{}={}".format(attr.upper(), value))
print("")

按照我现在编写这个博客时间节点来说,第九行的 FLAGS._parse_flags() 在新版本的Tensorflow中不再使用了,如果因为版本造成编译出错,会返回AttributeError: _parse_flags。所以从另一个博主那看到新的的代码为 FLAGS.flag_values_dict() (解析成字典并且存储到FLAGS.__flags中)。

注意点:

修改参数的方式
调用参数的方式
描述参数的方式
定义参数的类型

Tensorflow项目中--FLAGS=tf.flags.FLAGS相关推荐

  1. tensorflow(学习一)中的tf.app.flags函数定义命令行参数

    转自http://blog.csdn.net/leiting_imecas/article/details/72367937 tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受 ...

  2. tensorflow代码中的tf.app.run()

    一般 if __name__ == '__main__':之后紧接着的是主函数的运行入口,但在tensorflow的代码里头经常可以看到其后面的是tf.app.run(),这个究竟是什么意思呢??? ...

  3. 【python】tensorflow框架中的tf.gather_nd()函数对应的 pytorch框架的gather_nd()函数

    tf.gather_nd 函数对应的pytorch函数 1. 简单介绍 2. 步入正题 2.1 tensorflow tf.gather_nd() 2.2 pytorch框架手动实现gather_nd ...

  4. TensorFlow 中 tf.app.flags.FLAGS 的用法介绍

    转载自:https://blog.csdn.net/lyc_yongcai/article/details/73456960 下面介绍 tf.app.flags.FLAGS 的使用,主要是在用命令行执 ...

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

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

  6. tf.app.flags和tf.app.run的使用

    tf.app.flags和tf.app.run的使用 tf.app.flags主要用于处理命令行参数的解析工作,其实可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格 ...

  7. python获取命令行参数 flags_命令行参数--tf.app.flags和python argparse

    在实际工作中我们一般通过运行脚本时获取命令行的参数,有两种方式: 一.利用tf.app.flags组件 tf定义了tf.app.flags,用于接受命令行传递参数,相当于接受argv.首先调用自带的D ...

  8. tf.app.flags.DEFINE_string()和tf.app.flags.FLAGS和tf.app.run()

    tf.app.flags tf.app.flags主要用于处理命令行参数的解析工作,其实可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格式,类似于Json.XML) ...

  9. tf.app.flags 定义命令行可选参数

      tensorflow 定义了tf.app.flags,它是用来支持接受命令行传递参数,相当于接受argv,其中tf.app.flags.DEFINE_xx()用来添加命令行的optional ar ...

  10. tf.app.flags的使用教程

    参考博客:https://blog.csdn.net/leiting_imecas/article/details/72367937 tf定义了tf.app.flags,用于支持接受命令行传递参数,相 ...

最新文章

  1. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
  2. [原创]VS2008 英文版转为中文版之小记
  3. CCF201612-3 权限查询(100分)
  4. 做业务与技术之间的桥梁
  5. Zookeeper基于Java 访问-节点权限设置
  6. linux系统部署静态网站,Linux笔记15 使用Apache服务部署静态网站。
  7. ccf报数游戏java_ccf 201712 02 (游戏)
  8. MATLAB入门(二)
  9. mysql.sock问题
  10. (转载)android:visibility和android:scaleType 属性
  11. pair用法 lower_bound upper_bound
  12. fastText分类器
  13. 20170909在线编程之田忌赛马问题
  14. 常用的DOS功能输入输出
  15. 输入正方体的边长,计算正方体的面积和体积
  16. gif图片解析与生成(GIF+文字动效)
  17. 1466:Girls and Boys:优美的拆散早恋学生?
  18. java怎么做3d可视化图形
  19. 连锁加盟2-3事~实录
  20. 处理一次 MYSQL 启动异常 Error writing file '/tmp/MYYEBa32' (Errcode: 28 - No space left on device)

热门文章

  1. Windows 9X电脑经常出现bluescreen蓝屏怎么办?
  2. win7快速启动栏计算机,win7快速启动栏,教您Win7如何添加快速启动栏
  3. 使用google earth engine(GEE)提取亚马逊每年森林火灾区域
  4. matlab制作扇形统计图及颜色调配
  5. 软件开发中什么是CI/CD
  6. Spring -> Spring Boot、Spring MVC 和 Spring 有什么区别
  7. MindManager带你走进三顾茅庐
  8. The CATALINA_HOME environment variable is not defined correctly
  9. 仿支付宝支付密码输入框功能
  10. 江苏凤凰职教计算机教案,2017年江苏省职业学校教学大赛方案