tf.app.flags.DEFINE_XXX()就是添加命令行的optional argument(可选参数)
如果一个demo.py文件的代码中有tf.app.flags.DEFINE_XXX()时,比如有:
tf.app.flags.DEFINE_string(flag_name="logdir",
default_value="./graph",
docstring="给定模型日志存储的路径,默认为./graph")
tf.app.flags.DEFINE_integer(flag_name="batch_size",
default_value=16,
docstring="给定训练的时候每个批次的样本数目,默认为16.")
我们在这写这句代码时已经给定它们默认值了,就是default_value的值。如果我们后面想在运行py时重新给定它们的值时,可以通过命令的方式,不用去专门手动改它们的默认值,那如果这次要改成这样,下次改成那样,改来改去麻烦。直接看运行需要啥值,直接传就行了。
所以用命令的方式给定就行了。实际上,这个过程相当于传参一样。实现方式是:
如果是在cmd中,执行此demo.py文件,命令是:
D:\projects\cnn>python demo.py --logdir ./ddd --batch_size 20
在服务器执行时,也可以是这样的命令,具体看是啥服务器了。
这样的话,运行时会以命令中给定的值去运行,而不会使用默认值。
如果让此脚本文件在服务器上运行,通过命令的方式传值,这样也会更方便。
总之,让py文件通过命令行的方式去执行,就能去指定值,不指定的话,就用默认值,而且不指定的话,也可以不用用命令的方式执行py文件,直接在pycharm中运行也可以哦!
而tf.app.flags.FLAGS可以从对应的命令行取出参数
import tensorflow as tf
# tf.app.flags.DEFINE_xxx()就是添加命令行的optional argument(可选参数)
# 而tf.app.flags.FLAGS可以从对应的命令行参数取出参数
tf.app.flags.DEFINE_boolean(
flag_name='flag_bool', default_value=True, docstring='input a bool')
tf.app.flags.DEFINE_string(
flag_name='flag_string', default_value='yes', docstring='input a string')
FLAGS = tf.app.flags.FLAGS
print(FLAGS.flag_bool)
print(FLAGS.flag_string)
'''
执行结果如下:
True
yes
'''