Hugging Face documentation describes如何使用Bert模型进行序列分类:
from transformers import BertTokenizer, BertForSequenceClassification
import torch
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(0) # Batch size 1
labels = torch.tensor([1]).unsqueeze(0) # Batch size 1
outputs = model(input_ids, labels=labels)
loss, logits = outputs[:2]
但是,只有批量大小为1的示例。当我们有一个短语列表并且想要使用更大的批量时,如何实现它
在该示例中
unsqueeze
用于向输入/标签添加维度,因此它是一个大小为(batch_size, sequence_length)
的数组。如果要使用批量大小>;1,您可以构建序列数组,如下例所示:在该示例中,两个序列都以相同数量的标记进行编码,因此很容易构建包含两个序列的张量,但如果它们具有不同数量的元素,则需要填充序列,并使用注意掩码告诉模型应该关注哪些标记(以便忽略填充值)
在glossary中有一个关于注意面具的条目,解释了它们的用途和用法。在调用模型的forward方法时,将此注意掩码传递给模型
相关问题 更多 >
编程相关推荐