tf.app的flags和run用法

tf.app.flags 用来解析命令行参数,类似 python 自带的 argparser。用 tf.app.flags.DEFINE_* 定义参数名、默认值、帮助信息,最终结果会放在 tf.app.flags.FLAGS 里。依赖于 tf.app.run() 的调用,单独用 tf.app.flags 就可以解析。

不过由其代码[2]看,似乎只能传 int、float、bool、string 四种类型,传不了 list,而 argparser 可以。传 bool 参数时只能用 = 隔开参数名和参数值,而其它 3 种类型可以用 = 或空格,见下文例子。

tf.app.run() 时,要定义 main(args) 函数,它会自动调 main,并简单地把命令行参数(调用时空格隔开的若干字符串)作为参数传给 main ,好像并没有什么卵用

Code

  • tensorflow 1.12

tf.app.flags

# test.py
import tensorflow as tf

# 参数名,默认值,帮助信息
tf.app.flags.DEFINE_integer('batch_size', 64, "batch size")
tf.app.flags.DEFINE_float('alpha', 0.5, "alpha")
tf.app.flags.DEFINE_boolean('save', True, "whether to save the results")
tf.app.flags.DEFINE_string('log_path', 'log', "log path")

FLAGS = tf.app.flags.FLAGS


if "__main__" == __name__:
    print("\n--- FLAGS ---")
    print(FLAGS)
    print("\n--- FLAGS.__flags ---")
    print(FLAGS.__flags)
    print("\n--- enum ---")
    for k in FLAGS:
        print(k)
    print("\n--- fields ---")
    print("batch size:", FLAGS.batch_size)
    print("alpha:", FLAGS.alpha)
    print("save:", FLAGS.save)
    print("log path:", FLAGS.log_path)
  • 调用例子
python test.py
python test.py --batch_size 1  # 可以空格
python test.py --alpha=0.1  # 也可以 `=`
python test.py --save=False  # 只能 `=`
python test.py --save False  # **没**有效果

tf.app.run

# test.py
import tensorflow as tf


def main(cmd_line_args):
    print("--- command line arguments ---")
    print(cmd_line_args)


if "__main__" == __name__:
    # this will parse the command line arguments
    # and call `main` functions automatically
    tf.app.run()
  • 调用例子
python test.py
# 输出:['test.py']
python test.py --batch_size 1
# 输出:['test.py', '--batch_size', '1']
python test.py --batch_size=1 --alpha 0.1
# 输出:['test.py', '--batch_size=1', '--alpha', '0.1']

References

  1. tf.app.flags
  2. flags.py
  3. TensorFlow 中 tf.app.flags.FLAGS 的用法介绍
  4. tensorflow命令行参数之boolean使用的说明(踩坑指南)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值