tf.app.flags和tf.app.run的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caomin1hao/article/details/83057659

tf.app.flagstf.app.run的使用

tf.app.flags主要用于处理命令行参数的解析工作,其实可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格式,类似于JsonXML)。

 

我们通过tf.app.flags来调用这个flags.py文件,这样我们就可以用flags.DEFINE_interger/float()来添加命令行参数,而FLAGS=flags.FLAGS可以实例化这个解析参数的类从对应的命令行参数取出参数。
新建test.py文件,并输入如下代码,代码的功能是创建几个命令行参数,然后把命令行参数输出显示

import tensorflow as tf  

flags = tf.app.flags
flags.DEFINE_string('data_dir', '/tmp/mnist', 'Directory with the MNIST data.')
flags.DEFINE_integer('batch_size', 5, 'Batch size.')
flags.DEFINE_integer('num_evals', 1000, 'Number of batches to evaluate.')
FLAGS = flags.FLAGS

print(FLAGS.data_dir, FLAGS.batch_size, FLAGS.num_evals)

 

·  在命令行中输入test.py -h就可以查看帮助信息,也就是Directory with the MNIST data.,Batch size和Number of batches to evaluate这样的消息。

·  在命令行中输入test.py --batchsize 10就可以将batch_size的值修改为10!



tf.app.run()

该函数一般都是出现在这种代码中:

import tensorflow as tf



flags = tf.flags

flags.DEFINE_string('str_name', 'hjd', 'str_vale')

flags.DEFINE_integer('int_name', 200, 'int_value')

flags.DEFINE_bool('bool_name', False, 'bool_value')

flags = flags.FLAGS





#必须带参数,否则:'TypeError: main() takes no arguments (1 given)';

#main的参数名随意定义,无要求

def main(agr_123):

    print(flags.str_name)

    print(flags.int_name)

    print(flags.bool_name)



if __name__ == '__main__':

    tf.app.run()#执行main函数

上述第一行代码表示如果当前是从其它模块调用的该模块程序,则不会运行main函数!而如果就是直接运行的该模块程序,则会运行main函数。

猜你喜欢

转载自blog.csdn.net/caomin1hao/article/details/83057659