免费网站是如何盈利的,用前端做的比较酷的网站,微信推广员当年的推广费,永康电子商务网站建设一、基本介绍
argparse 模块是 Python 内置的用于命令行参数解析的模块#xff0c;可以通过少数代码中变量或者参数的改变以实现对整个代码项目的操控。对于大型代码项目(如代码超过1000行)#xff0c;十分便捷
argparse 模块可以让人轻松编写用户友好的命令行接口#xf…一、基本介绍
argparse 模块是 Python 内置的用于命令行参数解析的模块可以通过少数代码中变量或者参数的改变以实现对整个代码项目的操控。对于大型代码项目(如代码超过1000行)十分便捷
argparse 模块可以让人轻松编写用户友好的命令行接口能够帮助程序员为模型定义参数。
简单来说该模块就是一个“代码型”的操作界面通过修改集中的参数以实现各种目的 上图是yolov5中train.py的一部分argparse 模块。比如我们可以修改488中的const300改成const600。有了argparse 模块我们并不需要去整个yolov5代码中寻找在哪里去改const这个参数的值因为yolov5中代码各处加起来有上千上万行。 二、使用方法
import argparse
parser argparse.ArgumentParser()
parser.add_argument()
parser.parse_args()import argparse表示导入该模块跟import torch as t类似 parser argparse.ArgumentParser表示创建了一个解析对象也叫参数解析器接下来就要向这个对象里添加一些我想要的命令行参数和选项。ArgumentParser()括号内可以为空也可以写成ArgumentParser(description“”)双引号内是用来描述该解析器是做什么的该参数可以为空 parser.add_argument表示向parser中添加对象参数信息这也十分好理解将add_argument翻译成中文就是这个意思
在pytorch语法中官方要求的解析命令参数信息如下
parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][,choices][, required][, help][, metavar][, dest])每个参数解释如下
name: 设定变量或者标签名称 普通参数或者标签(flag)的名称例如 epochs 或者 -e, --epochs action: 命令行遇到flags参数时的动作 有6种动作如下 store保存参数值可能会先将参数值转换成另一个数据类型 store_true设定flag参数为true store_false设定flag参数为False。这两个用于实现布尔开关 store_const表示赋值为const append 将值保存到一个列表中如果参数出现重复情况则会保存为多个值 append_const 将一个定义在参数规格中的值保存到一个列表中 version 打印关于程序的版本信息然后退出
nargs: 设置参数在使用时可以提供的个数
应该读取的命令行参数个数可以是具体的数字或者是?号当不指定值时对于 Positional argument 使用 default对于 Optional argument 使用 const或者是 * 号表示 0 或多个参数或者是 号表示 1 或多个参数。
const action 和 nargs 所需要的常量值
default: 没有设置值情况下的默认参数 default表示命令行没有设置该参数的值的时候程序中需要用什么值来代替这个参数的值。 type: 命令行参数应该被转换成的数据类型 pytorch默认的参数类型是str类型如果你的程序需要一个整数或者布尔型参数你需要设置typeint或typebool required: 是否为必选参数或可选参数 如果设置了requiredTrue, 则在实际运行的时候不设置该参数的值程序将报错error: argument --name is required如果设置了requiredFalse那么在实际运行时有无该参数并不影响 报错信息
error: argument --name is requiredhelp: 指定参数的说明信息 help参数的值可以给使用工具的人提供该参数是用来设置什么的说明这样让使用者知道这个参数是干什么用的 举例如下
parser.add_argument(-arch, requiredTrue, choices[alexnet, vgg],helpthe architecture of CNN, at this time we only support alexnet and vgg.)**metavar 在 usage 说明中的参数名称**对于必选参数默认就是参数名称对于可选参数默认是全大写的参数名称。
dest 设置参数在代码中的变量名 默认情况下argparse默认的变量名是--或-后面的字符串如parser.add_argument(-name, nargsx)中的变量名为name但是我们也可以通过destxxx来设置参数的变量名 choices 参数可允许的值的一个容器 就是参数值可以在哪几个数值里面选择 如果不在规定的几个值里面选择会发生如下报错
error: argument -arch: invalid choice: resnet (choose from alexnet, vgg)count存储遇到的次数
parser.parse_args()表示解析参数
三、具体例子
# 导入库
import argparse# 1. 定义命令行解析器对象
parser argparse.ArgumentParser(descriptionDemo of argparse)# 2. 添加命令行参数
parser.add_argument(--epochs, typeint, default30)
parser.add_argument(--batch, typeint, default4)# 3. 从命令行中结构化解析参数
args parser.parse_args()
print(args)
epochs args.epochs
batch args.batch
print(show {} {}.format(epochs, batch))输出结果
Namespace(epochs30, batch4)
show 30 4