TensorFlow中tf.app.flags的用途是什么?

2024-04-27 17:32:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读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这个用法的文档。

我发现这个标志的实现在 ^{}

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


Tags: ofto代码appnumberdataratetf
3条回答

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

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

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

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

$ python fully_connected_feed.py --learning_rate 1.00

然后将学习速率设置为1.00,如果未指定标志,则保持0.01。

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

此外,正如在文章中提到的,使用Tensorflow标志比其他Python包(如argparse)提供的标志功能有几个优点,特别是在处理Tensorflow模型时,最重要的是可以向代码提供Tensorflow特定的信息,如关于要使用哪个GPU的信息。

tf.app.flags模块目前是python gflags的瘦包装,因此documentation for that project是如何使用它的最佳资源,它实现了^{}中的功能子集。

请注意,此模块当前打包为便于编写演示应用程序,技术上不属于公共API的一部分,因此将来可能会发生更改。

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

编辑:实际上,tf.app.flags模块不是使用python-gflags实现的,而是使用类似的API。

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

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

相关问题 更多 >