参考网址:
https://lightning.ai/docs/pytorch/LTS/api/pytorch_lightning.utilities.argparse.html#pytorch_lightning.utilities.argparse.add_argparse_args
1. 简单传入参数.
parse_known_args()方法的作用就是把不在预设属性里的参数也返回,比如下面这个例子,
执行python test.py -t, 预设中只存在-n和-y,故而被保存在unkown1中.
import argparse
# from pytorch_lightning import Trainer
## 1.设置传入参数的属性
parser = argparse.ArgumentParser()
parser.add_argument(
"-n",
"--name",
type=str,
const=True,
nargs="?",
help="postfix for logdir",
)
parser.add_argument(
"-y",
"--year",
type=int,
const=True,
default="7",
nargs="?",
help="postfix for logdir",
)
2. 解析
opt1, unknown1 = parser.parse_known_args()
print("opt1",opt1)
print("unkonwn1",unknown1)
打印结果
2. parser.add_argument
add_argument
方法是 argparse
模块中的 ArgumentParser
类的一个方法,用于定义命令行接口中可以接受的参数。`
-
name_or_flags
: 这个参数是必需的,可以是字符串或字符串的列表。它定义了命令行参数的名字或者标志(flag)。例如:'--verbose'
或-v
表示长选项或短选项。'dest'
可以指定参数的目标名称(存储到命名空间的属性名),如果不指定,默认会根据提供的名字生成。
-
action
: 定义了参数触发的动作类型。默认是'store'
,意味着参数值会被存储。其他常见的动作包括:'store_const'
: 存储一个常数值,而不是参数值。'store_true'
/'store_false'
: 分别用于布尔标志,没有参数值,仅表示真或假。'append'
: 将参数值添加到列表中,如果参数被多次提供,则会收集所有值。'count'
: 计数参数被提供了多少次。
-
nargs
: 定义了应该从命令行读取多少个参数值。例如:'?'
: 可选参数,可以有零个或一个值。'*'
: 零个或多个值。'+'
: 一个或多个值。N
: 具体的数值,表示参数需要 N 个值。
-
const
: 当action
或nargs
需要一个常数值时使用,比如'store_const'
或'append_const'
。 -
default
: 如果参数没有在命令行中给出,那么将使用此默认值。 -
type
: 参数值的数据类型,例如int
,float
,str
或者自定义的类型函数,如上面提到的str2bool
。 -
choices
: 限制参数值的范围,只允许特定的值。 -
required
: 布尔值,指示参数是否必须出现在命令行中。 -
help
: 提供给用户的帮助信息,描述参数的作用。 -
metavar
: 在帮助信息中显示的参数值的名称,可以用来代替参数名称。 -
dest
: 指定在解析后的命名空间中存储参数值的属性名称。
3. 使用Pytroch_Lightning 来增加参数属性
Pytroch_Lightning是一个更加方便更集成的深度学习训练框架,.
Trainer.add_argparse_args(parser)会像parser.add_argument一样添加属性,打印结果可证明.
import argparse
from pytorch_lightning import Trainer
parser = argparse.ArgumentParser()
parser.add_argument(
"-y",
"--year",
type=int,
const=True,
default="7",
nargs="?",
help="postfix for logdir",
)
parser = Trainer.add_argparse_args(parser)
opt2, unknown2 = parser.parse_known_args()
print("opt2",opt2)
print("unkown2",unknown2)
打印结果