huggingface三种添加Bert模型的方法

首先搞清楚预训练模型一般会有的文件:

  1. vocab.txt
  2. config.json
  3. pytorch_model.bin

这三个分别对应tokenizer,config和model。

添加huggingface hub里面的模型

  1. 只要有模型名就可以导入tokenizer和model
  2. 无需导入config
# 这里导入Huggingface里面有的模型:hfl/chinese-roberta-wwm-ext

# 使用预训练模型的权重,生成分词器
tokenizer = BertTokenizerFast.from_pretrained("hfl/chinese-roberta-wwm-ext") 

# 载入模型
model = BertForSequenceClassification.from_pretrained("hfl/chinese-roberta-wwm-ext")

添加自己通过迁移训练或者增量训练生成的模型

  1. 需要给出本地模型存储地址
  2. 通过模型地址导入tokenizer、config和model
  3. 如果要更新config需要在导入model之前更新
# 本地模型存储的地址
checkpoint = os.path.join(project_path, 'model/checkpoint-1000')

# 使用预训练模型的权重,生成分词器
tokenizer = AutoTokenizer.from_pretrained(checkpoint)  

# 载入模型
config = AutoConfig.from_pretrained(checkpoint)
config.num_labels = len(labels)
config.problem_type = "multi_label_classification"
config.id2label = id2label
config.label2id = label2id
model = AutoModelForSequenceClassification.from_pretrained(checkpoint, config=config)

添加别人的模型

  1. 需要给出本地模型存储的地址
  2. 需要从地址中导入tokenizer、config和model。如果要更新config需要在导入model之前。(和第二种导入的方法一样)
  3. 要注意模型内的文件名是否符合transformers的要求。例如,config.json,vocab.txt不能有其他的名字,否则会导入出错。另外在config.json里面也需要有指出"model_type"。
# 模型存储的地址
checkpoint = os.path.join(project_path, f'FinBERT_L-12_H-768_A-12_pytorch')

# 从模型导入分词器
tokenizer = AutoTokenizer.from_pretrained(checkpoint) 

# 导入config
config = AutoConfig.from_pretrained(checkpoint)
config.num_labels = len(labels)
config.problem_type = "multi_label_classification"
config.id2label = id2label
config.label2id = label2id

#导入模型
model = AutoModelForSequenceClassification.from_pretrained(checkpoint, config=config)
posted @ 2023-03-06 19:39  地球美好不  阅读(566)  评论(0编辑  收藏  举报