Transformers库也叫(pytorch-transformers
and pytorch-pretrained-bert
),提供了很多SOTA的预训练模型,比如BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet, CTRL…
这个库比上一篇博客中讲的 pytorch-pretrained-bert
库更完整,bert的使用方法略有不同,不需要自己手动去下载模型和词表这两个东西了,第一次运行的时候程序会自动下载,同时forward函数里也没有output_all_encoded_layers
这个参数了,默认返回的就是最后一层的所有token的embedding和cls
字符的embedding
比如Bert的简单使用:
from transformers import BertModel, BertTokenizer
import numpy as np
import torch
### 1. 这种方式是不需要手动下载模型文件,在网速快的时候使用
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
bert = BertModel.from_pretrained('bert-base-uncased')
### 2. 这种方式是需要手动下载模型文件,网速慢使用,推荐使用第2种。
tokenizer = BertTokenizer.from_pretrained('E:/Projects/bert-base-uncased/bert-base-uncased-vocab.txt')
bert = BertModel.from_pretrained('E:/Projects/bert-base-uncased/bert-base-uncased/')
s = "I'm not sure, this can work, lol -.-"
# tokens = tokenizer.tokenize(s)
# tokens = ["[CLS]"] + tokens + ["[SEP]"]
# ids1 = torch.tensor([tokenizer.convert_tokens_to_ids(tokens)])
# print(ids1)
# 上面三行代码也可以用这一行来代替
ids2 = torch.tensor([tokenizer.encode(s, add_special_tokens=True)])
print(ids2)
result = bert(ids2)
print(result)
更具体的细节可以看官网Transformers
Github地址在这