zoukankan      html  css  js  c++  java
  • tensorflow参数解析&&Python- argparse.ArgumentParser()用法解析

     
    #method1 sys
    import sys
    gpus = sys.argv[1]
    batch_size = sys.argv[2]
    print(gpus)
    print(batch_size)
     
    #method2 argparse  输入参数时要输入 -gpu=1
    import argparse
    parser = argparse.ArgumentParser(description='manual to this script')
    parser.add_argument('--gpus', type=str, default=None)
    parser.add_argument('--batch_size', type=int, default=32,
                        help='xxxxxxxx')
    args = parser.parse_args()
    print(args.gpus)  #自动解析gpu和batchsize
    print(args.batch_size)
     
     
    """
    tensorflow只提供以下几种方法: 
    tf.app.flags.DEFINE_string, 
    tf.app.flags.DEFINE_integer, 
    tf.app.flags.DEFINE_boolean, 
    tf.app.flags.DEFINE_float 四种方法,分别对应str, int,bool,float类型的参数。这里对bool的解析比较严格,传入1会被解析成True,其余任何值都会被解析成False。
    脚本中需要定义一个接收一个参数的main方法:def main(_):,这个传入的参数是脚本名,一般用不到, 所以用下划线接收。
    以batch_size参数为例,传入这个参数时使用的名称为--batch_size,也就是说,中划线不会像在argparse 中一样被解析成下划线。
    tf.app.run()会寻找并执行入口脚本的main方法。也只有在执行了tf.app.run()之后才能从FLAGS中取出参数。 
    从它的签名来看,它也是可以自己指定需要执行的方法的,不一定非得叫main
    """
    #method3 tf.app.run  -gpus=1
    import tensorflow as tf
    tf.app.flags.DEFINE_string('gpus', None, 'gpus to use')
    tf.app.flags.DEFINE_integer('batch_size', 5, 'batch_size')
     
    FLAGS = tf.app.flags.FLAGS
     
    def main(_):
        print(FLAGS.gpus)
        print(FLAGS.batch_size)
     
    if __name__ == "__main__":
        tf.app.run()
     
     
     

    argparse是一个Python模块:命令行选项、参数和子命令解析器。

    argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。

    使用流程:
    创建解析器
    ap= argparse.ArgumentParser(description='Process some integers.')

    使用 argparse 的第一步是创建一个 ArgumentParser 对象。

    ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。

    添加参数
    ap.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')

    给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的。

    解析参数
    >>> ap.parse_args(['--sum', '7', '-1', '42'])
    Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])

    ArgumentParser 通过 parse_args() 方法解析参数。

    ArgumentParser 对象
    class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True)

    prog - 程序的名称(默认:sys.argv[0])
    usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
    description - 在参数帮助文档之前显示的文本(默认值:无)
    epilog - 在参数帮助文档之后显示的文本(默认值:无)
    parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
    formatter_class - 用于自定义帮助文档输出格式的类
    prefix_chars - 可选参数的前缀字符集合(默认值:’-’)
    fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
    argument_default - 参数的全局默认值(默认值: None)
    conflict_handler - 解决冲突选项的策略(通常是不必要的)
    add_help - 为解析器添加一个 -h/--help 选项(默认值: True)
    allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)
    add_argument() 方法
    ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

    name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
    action - 当参数在命令行中出现时使用的动作基本类型。
    nargs - 命令行参数应当消耗的数目。
    const - 被一些 action 和 nargs 选择所需求的常数。
    default - 当参数未在命令行中出现时使用的值。
    type - 命令行参数应当被转换成的类型。
    choices - 可用的参数的容器。
    required - 此命令行选项是否可省略 (仅选项可用)。
    help - 一个此选项作用的简单描述。
    metavar - 在使用方法消息中使用的参数值示例。
    dest - 被添加到 parse_args() 所返回对象上的属性名。

    原文链接:https://blog.csdn.net/huima2017/article/details/104797135

  • 相关阅读:
    RTC驱动程序分析
    Linux下的RTC子系统
    [置顶] 谈EXPORT_SYMBOL使用
    《Linux内核修炼之道》精华分享与讨论(5)——Kernel地图:Kconfig与Makefile
    写出高效优美的单片机C语言代码
    哈夫曼树
    如何提高浮点数变整数的精度
    CF798C Mike and gcd problem
    CF822C Hacker, pack your bags!
    CF821C Okabe and Boxes
  • 原文地址:https://www.cnblogs.com/h694879357/p/15402580.html
Copyright © 2011-2022 走看看