tf.app.flags 的用法或 API

use*_*609 2 python conv-neural-network tensorflow

在阅读cifar10示例时,可以看到如下代码段,据说是遵循google命令行标准的。但具体来说,这个代码段是做什么的?我没有找到涵盖类似内容的 API 文档tf.app.flags.DEFINE_string

FLAGS = tf.app.flags.FLAGS

tf.app.flags.DEFINE_string('train_dir', '/tmp/cifar10_train',
                       """Directory where to write event logs """
                       """and checkpoint.""")
tf.app.flags.DEFINE_integer('max_steps', 1000000,
                        """Number of batches to run.""")
tf.app.flags.DEFINE_boolean('log_device_placement', False,
                        """Whether to log device placement.""")
Run Code Online (Sandbox Code Playgroud)

Gab*_*ent 5

我使用 TensorFlow 的经验是,查看源代码通常比 API 文档中的 Ctrl+F 更有用。我将 PyCharm 与 TensorFlow 项目一起打开,并且可以轻松搜索如何做某事的示例(例如,自定义阅读器)。

在这种特殊情况下,您想查看tensorflow/python/platform/flags.py 中发生了什么。它实际上只是 argparse.ArgumentParser() 的一个薄包装。特别是,所有 DEFINE_* 最终都会向 _global_parser 添加参数,例如,通过这个辅助函数:

def _define_helper(flag_name, default_value, docstring, flagtype):
    """Registers 'flag_name' with 'default_value' and 'docstring'."""
    _global_parser.add_argument("--" + flag_name,
                                default=default_value,
                                help=docstring,
                                type=flagtype)
Run Code Online (Sandbox Code Playgroud)

因此,他们的标志 API 与您在ArgumentParser 中找到的基本相同。