HfArgumentParser 使用例子
HfArgumentParser可以将类对象中的实例属性转换成转换为解析参数。必须注意的是,这里的类对象必须是通过@dataclass()创建的类对象。并且通过HfArgumentParser创建的解析参数,都是可选参数。
from transformers import HfArgumentParser
from dataclasses import dataclass, field
@dataclass()
class A():
a: str = field(default="Alice")
@dataclass()
class B():
b: str = field(default="汪汪汪")
if __name__ == '__main__':
parser = HfArgumentParser((A, B))
a_args, b_args = parser.parse_args_into_dataclasses()
print(a_args)
print(b_args)
shell
python HfArgumentParser_test.py --a="Ali" --b="Bob"
结果:
A(a=‘Ali’)
B(b=‘Bob’)
Pycharm
针对shell传参不能Debug的痛点,可使用Pycharm进行Debug,下述介绍具体做法
- 鼠标右键,点击 Modify Run Configuration
若参数比较多,可点击 expand,放大输入窗口
下述的几种参数输入格式都是支持的
--a "Ali
--a Ali
--b=Bob
参数在json文件中
para.json
{
"name" : "J",
"age" : 18
}
方式一
from transformers import HfArgumentParser
from dataclasses import dataclass
import os
@dataclass
class Stu:
age: int
name: str
def main(*args):
parser = HfArgumentParser((Stu))
args = parser.parse_json_file(json_file=os.path.abspath(args[0]))
print(args)
方式二 shell
main.py
在main.py
中,写入如下代码
from dataclasses import dataclass
from transformers import HfArgumentParser
import os
import sys
@dataclass
class Stu:
age: int
name: str
def main():
parser = HfArgumentParser((Stu))
args = parser.parse_json_file(json_file=os.path.abspath(sys.argv[1]))
print(args)
main()