【写在前面】之前搭建深度学习模型的过程中并没有对模型中一些定式化的部分进行整理,现在为了让模型风格更加统一,可读性更强,便于维护,对相关配置模版代码进行整理,并放在GitHub上,随取随用,欢迎star~ Github仓库链接:https://github.com/FutureForMe/ConfigTemplates。
解析对象类及其参数如下所示:
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, exit_on_error=True)
prog - 程序的名称 (默认值: os.path.basename(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)
exit_on_error - 决定当错误发生时是否让 ArgumentParser 附带错误信息退出。 (默认值: True)
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() 所返回对象上的属性名。
ArgumentParser.parse_args(args=None, namespace=None)
args - 要解析的字符串列表。 默认值是从 sys.argv 获取。
namespace - 用于获取属性的对象。 默认值是一个新的空 Namespace 对象
常用参数解析模板如下所示:
import argparse # 第一步:引入argparse库
def set_parser():
parser = argparse.ArgumentParser(description='The parser for text classification') # 第二步:创建解析对象
parser.add_argument('-model_name', type=str, default='CNN',
choices=['CNN', 'RNN', 'Transformer']) # 第三步:添加命令行参数和选项
parser.add_argument('-filter', type=str, default='3,4,5', help='kernel size for CNN')
# ...可以添加其他模型需要的参数
args = parser.parse_args() # 第四步:对参数进行解析
return args
if __name__ == '__main__':
args = set_parser()
print(args.model_name)
调用方式也基本分为两种,一种是在模型内部代码中调用,另一种是可以命令行运行是进行赋值调用。
python set_argparse -model RNN
具体细节见网站文档。