您的位置:首页 > 移动开发

为什么使用 tf.app.run(),用来解析FLAGS

2020-03-04 23:39 1166 查看

文章目录

使用的tensorflow 版本

In [1]: import tensorflow as tf

In [2]: print(tf.__version__)
1.8.0

源码

@tf_export('app.run')
def run(main=None, argv=None):
"""Runs the program with an optional 'main' function and 'argv' list."""

# Define help flags.
_define_help_flags()

# Parse known flags.
argv = flags.FLAGS(_sys.argv if argv is None else argv, known_only=True)

main = main or _sys.modules['__main__'].main

# Call the main function, passing through any arguments
# to the final program.
_sys.exit(main(argv))

示例代码

import tensorflow as tf

flags = tf.app.flags

flags.DEFINE_string('string', 'train', 'This is a string')
flags.DEFINE_float('learning_rate', 0.001, 'This is the rate in training')
flags.DEFINE_boolean('flag', False, 'This is a flag')

FLAGS = flags.FLAGS

def main(argv):
print('string: ', FLAGS.string)
print('learning rate: ', FLAGS.learning_rate)
print('flag:', FLAGS.flag)

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

打印用法

> python3 test.py --help

>> 结果

USAGE: test.py [flags]
flags:

test.py:
--[no]flag: This is a flag
(default: 'false')
--learning_rate: This is the rate in training
(default: '0.001')
(a number)
--string: This is a string
(default: 'train')

Try --helpfull to get a list of all flags.

指定参数

python3 test.py --string 'test' --learning_rate 0.2 --flag False
> string:  test
> learning rate:  0.2
> flag: True

为什么flag 没有生效呢?看help就可以得到答案:
–[no]flag: This is a flag
(default: ‘false’)
原来boolean,设置是用前置[no]来实现

python3 test.py --string 'test' --learning_rate 0.2 --noflag
> string:  test
> learning rate:  0.2
> flag: False
  • 点赞
  • 收藏
  • 分享
  • 文章举报
七棵树的csdn 发布了1 篇原创文章 · 获赞 0 · 访问量 47 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: