tensorflow命令行参数之boolean使用的说明(踩坑指南)

问题描述

简而言之就是,参数输出值与命令行输入值不一致

比如我们有个main.py,具体代码如下:

import tensorflow as tf


tf.app.flags.DEFINE_boolean('if_gpu', True, 'if use gpu')
FLAGS = tf.app.flags

def main(_):
    print(FLAGS.if_gpu)

if __name__ == '__main__':
    tf.app.run()

 

python main.py --if_gpu False

当执行如上代码时(或者 if_gpu 后接任何值),该参数的输出恒为 True ;而且不管默认值为 True 还是 False,只要--if_gpu后面有值传入,参数值都会是 True,这个时候开始查阅资料,看到大家好像没遇到过这个问题似的,几乎没讨论。一个普遍的置 False 方法是参数前加 no,也就是执行 python main.py --noif_gpu,这ok,但是如若我们要写个脚本,就困难了,既然置 True 和置 False 形式不一样,就需对每个boolean参数传入值进行判断,是 True 可正常接参数;是False,需要在参数前加 no,会有 2^n 个执行形式...显然不能这样做。

解决办法

方法是很简单的,只是过程费了些时间。也是习惯所致,本人命令行传参时从来不用等号,没想到简单地加个等号,就解决了。如下所示:

python main.py --if_gpu=False

也就是,凡是boolean类型参数,加 “=” 就与参数输入一致了。

补充

这个问题好像之前是个bug,即使有等号,也同样有问题。

 图片参考:https://github.com/tensorflow/tensorflow/issues/379

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值