TensorFlow中的tf.app.flags的目的是什么?
python
tensorflow
5
0

我正在Tensorflow中阅读一些示例代码,发现以下代码

flags = tf.app.flags
FLAGS = flags.FLAGS
flags.DEFINE_float('learning_rate', 0.01, 'Initial learning rate.')
flags.DEFINE_integer('max_steps', 2000, 'Number of steps to run trainer.')
flags.DEFINE_integer('hidden1', 128, 'Number of units in hidden layer 1.')
flags.DEFINE_integer('hidden2', 32, 'Number of units in hidden layer 2.')
flags.DEFINE_integer('batch_size', 100, 'Batch size.  '
                 'Must divide evenly into the dataset sizes.')
flags.DEFINE_string('train_dir', 'data', 'Directory to put the training data.')
flags.DEFINE_boolean('fake_data', False, 'If true, uses fake data '
                 'for unit testing.')

tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py

但是我找不到有关tf.app.flags用法的任何文档。

我发现此标志的实现在tensorflow/tensorflow/python/platform/default/_flags.py

显然,此tf.app.flags以某种方式用于配置网络,所以为什么不在API文档中呢?谁能解释这是怎么回事?

参考资料:
Stack Overflow
收藏
评论
共 5 个回答
高赞 时间 活跃

使用tf.app.run() ,可以使用tf.app.flags在线程之间非常方便地传输变量。见对于进一步使用tf.app.flags

收藏
评论

在Google,他们使用标记系统来设置参数的默认值。它类似于argparse。他们使用自己的标记系统,而不是argparse或sys.argv。

资料来源:我以前在那里工作过。

收藏
评论

tf.app.flags模块是tf.app.flags提供的功能,用于为Tensorflow程序实现命令行标志。例如,您遇到的代码将执行以下操作:

flags.DEFINE_float('learning_rate', 0.01, 'Initial learning rate.')

第一个参数定义标志的名称,第二个参数定义默认值,以防执行文件时未指定标志。

因此,如果运行以下命令:

$ python fully_connected_feed.py --learning_rate 1.00

那么学习率将设置为1.00,如果未指定该标志,则将保持0.01。

本文所述,文档可能不存在,因为这可能是Google内部要求开发人员使用的文档。

另外,如文章中所述,使用Tensorflow标志比其他Python软件包(例如argparse提供的标志功能有很多优势,尤其是在处理Tensorflow模型时,最重要的是可以向代码提供Tensorflow特定信息,例如有关使用哪个GPU的信息。

收藏
评论

目前, tf.app.flags模块是围绕python-gflags的一个瘦包装,因此该项目文档 argparse 的最佳使用资源 ,它在python-gflags实现了功能的子集。

请注意,该模块当前已打包为方便编写演示应用程序使用,从技术上讲,它不是公共API的一部分,因此将来可能会更改。

我们建议您使用argparse或您喜欢的任何库来实现自己的标志解析。

编辑: tf.app.flags模块实际上并未使用python-gflags ,但它使用了类似的API。

收藏
评论

经过多次尝试后,我发现它可以打印所有FLAGS键以及实际值-

for key in tf.app.flags.FLAGS.flag_values_dict():

  print(key, FLAGS[key].value)
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号