如何保存经过微调的bert,以用于序列分类模型标记器和配置?

时间:2020-10-21 19:23:52

标签: model save bert-language-model

像这样微调后,我想将所有训练好的模型保存在文件夹中:

config.json
added_token.json
special_tokens_map.json
tokenizer_config.json
vocab.txt
pytorch_model.bin

我只能保存pytorch_model.bin,但无法保存其他详细信息,如何保存模型的所有配置,令牌生成器等?

我用过

tokenizer.save_pretrained('results/tokenizer/')

可是豌豆

AttributeError: 'BertTokenizer' object has no attribute 'save_pretrained'

我通过以下代码保存了二进制模型文件

torch.save(model_to_save.state_dict(), output_model_file)

但是当我用它保存令牌生成器或配置文件时,我无法做到,因为我不知道我应该保存令牌生成器的文件扩展名,而且我无法访问cofig文件, 有什么办法可以保存我的模型的所有细节? 预先感谢

1 个答案:

答案 0 :(得分:0)

我不知道您如何定义令牌生成器以及将“ tokenizer”变量分配给了什么,但这可以解决您的问题:

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(...)
tokenizer.save_pretrained('results/tokenizer/')

这将保存有关令牌生成器的所有信息,并获得your_model.save_pretrained('results/tokenizer/')

config.json
added_token.json
special_tokens_map.json
tokenizer_config.json
vocab.txt
pytorch_model.bin

评论后的更新:

如果您使用的是from pytorch_pretrained_bert import BertForSequenceClassification,则该属性不可用(如code所示)。

您应该做的是使用transformers,它也集成了此功能。

示例:

from transformers import BertForSequenceClassification

model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
model.save_pretrained('results/tokenizer/')

另一种解决方案是使用AutoClasses