I have understood what a parser does, but I do not get its use when it is mingled with tf.app.run()
in the following code:
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)
the main function in the program does not have any arguments as it is defined as def main(_)
. So what is the argv
argument in tf.app.run()
supposed to mean or do?
Thanks
The argv
parameter is used in Tensorflow's built-in command-line flag parsing. It's mainly intended for demos. You can define flags like tf.flags.DEFINE_integer('batch_size', 128)
. You will then be able to access it with tf.flags.FLAGS.batch_size
.
If you are parsing your arguments using ArgumentParser
then you don't need to use tf.app.run
.