『TensorFlow』命令行参数解析

argparse很强大,但是我们未必需要使用这么繁杂的东西,TensorFlow自己封装了一个简化版本的解析方式,实际上是对argparse的封装

脚本化调用tensorflow的标准范式:

import pprint
import tensorflow as tf

flags = tf.app.flags

# 脚本参数名,值,描述
# 脚本参数有四种取值:整数,浮点数,字符串,布尔类型,也是相比argv模块高级
flags.DEFINE_integer("epoch", 25, "Epoch to train [25]")
flags.DEFINE_float("learning_rate", 0.0002, "Learning rate of for adam [0.0002]")
flags.DEFINE_string("sample_dir", "samples", "Directory name to save the image samples [samples]")
flags.DEFINE_boolean("train", False, "True for training, False for testing [False]")

FLAGS = flags.FLAGS

# main必须带参数
# 否则:'TypeError: main() takes no arguments (1 given)';
# 其中main的参数名随意定义,无要求
def main(_):

    # flags.FLAGS.__flags为包含了所有输入的列表
    pp = pprint.PrettyPrinter()
    pp.pprint(flags.FLAGS.__flags)
    
    # 也可以单个查询,格式为:FLAGS.参数名
    if FLAGS.epoch is None:
        FLAGS.epoch = 50


if __name__=='__main__':
    # 下面的函数会自动调用main函数
    tf.app.run()

 

 作为参考,稍微提一下使用sys包接收脚本参数的格式:

import sys
a=sys.argv[0]
print(a)
# 打印出脚本名

 tf的方法更为高级一些,自动区分参数类型,自动设定默认值,自动和参数名称对应,在tf脚本中,指定规定参数时只要:[脚本名 --参数名 参数值]即可,而且FLAGS可以直接传给函数增加便捷度:『TensorFlow』以GAN为例的神经网络类范式

posted @ 2017-08-16 15:28  叠加态的猫  阅读(1570)  评论(0编辑  收藏  举报