tf.app.run() 和 argparse 的用法
usage of tf.app.run() and argparse
我已经了解了解析器的作用,但是当它与以下代码中的 tf.app.run()
混合在一起时,我无法理解它的用途:
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.register("type", "bool", lambda v: v.lower() == "true")
parser.add_argument("--ps_hosts",
type=str,
default="",
help="Comma-seperated list of hostname:port pairs")
parser.add_argument("--worker_hosts",
type=str,
default="",
help="Comma-seperated list of hostname:port pairs")
parser.add_argument("--job_name",
type=str,
default="",
help="One of 'ps', 'worker'")
parser.add_argument("--task_index",
type=int,
default=0,
help="Index of task within the job")
parser.add_argument("--data_dir",
type=str,
- default="/tmp/mnist_data",
help="Directory for storing input data")
parser.add_argument("--log_dir",
type=str,
default="/tmp/train_logs",
help="Directory of train logs")
FLAGS, unparsed = parser.parse_known_args()
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
程序中的主函数没有任何参数,因为它被定义为def main(_)
。那么 tf.app.run()
中的 argv
参数应该是什么意思或做什么?
谢谢
argv
参数用于Tensorflow内置的命令行标志解析。它主要用于演示。您可以定义标志,如 tf.flags.DEFINE_integer('batch_size', 128)
。然后您将能够使用 tf.flags.FLAGS.batch_size
访问它。
如果您使用 ArgumentParser
解析参数,则无需使用 tf.app.run
.
我已经了解了解析器的作用,但是当它与以下代码中的 tf.app.run()
混合在一起时,我无法理解它的用途:
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.register("type", "bool", lambda v: v.lower() == "true")
parser.add_argument("--ps_hosts",
type=str,
default="",
help="Comma-seperated list of hostname:port pairs")
parser.add_argument("--worker_hosts",
type=str,
default="",
help="Comma-seperated list of hostname:port pairs")
parser.add_argument("--job_name",
type=str,
default="",
help="One of 'ps', 'worker'")
parser.add_argument("--task_index",
type=int,
default=0,
help="Index of task within the job")
parser.add_argument("--data_dir",
type=str,
- default="/tmp/mnist_data",
help="Directory for storing input data")
parser.add_argument("--log_dir",
type=str,
default="/tmp/train_logs",
help="Directory of train logs")
FLAGS, unparsed = parser.parse_known_args()
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
程序中的主函数没有任何参数,因为它被定义为def main(_)
。那么 tf.app.run()
中的 argv
参数应该是什么意思或做什么?
谢谢
argv
参数用于Tensorflow内置的命令行标志解析。它主要用于演示。您可以定义标志,如 tf.flags.DEFINE_integer('batch_size', 128)
。然后您将能够使用 tf.flags.FLAGS.batch_size
访问它。
如果您使用 ArgumentParser
解析参数,则无需使用 tf.app.run
.