🚀 Eli4s/Bert-L12-h240-A12 模型
该模型使用知识蒸馏技术在 bookcorpus 数据集上进行了预训练。它与 BERT 架构相同,但隐藏层大小为 240。由于它有 12 个注意力头,因此每个头的大小(20)与 BERT 基础模型(64)不同。该模型的知识蒸馏使用了多种损失函数,并且权重是从头开始初始化的。此外,该模型使用的分词器与 bert-base-uncased
模型相同。
🚀 快速开始
加载模型和分词器
from transformers import AutoModelForMaskedLM, BertTokenizer
model_name = "eli4s/Bert-L12-h240-A12"
model = AutoModelForMaskedLM.from_pretrained(model_name)
tokenizer = BertTokenizer.from_pretrained(model_name)
作为掩码语言模型使用
import torch
sentence = "Let's have a [MASK]."
model.eval()
inputs = tokenizer([sentence], padding='longest', return_tensors='pt')
output = model(inputs['input_ids'], attention_mask=inputs['attention_mask'])
mask_index = inputs['input_ids'].tolist()[0].index(103)
masked_token = output['logits'][0][mask_index].argmax(axis=-1)
predicted_token = tokenizer.decode(masked_token)
print(predicted_token)
预测前 n 个最相关的结果
top_n = 5
vocab_size = model.config.vocab_size
logits = output['logits'][0][mask_index].tolist()
top_tokens = sorted(list(range(vocab_size)), key=lambda i:logits[i], reverse=True)[:top_n]
tokenizer.decode(top_tokens)
✨ 主要特性
- 独特架构:与 BERT 架构相同,但隐藏层大小和注意力头大小不同。
- 知识蒸馏:使用多种损失函数进行知识蒸馏。
- 权重初始化:模型权重从头开始初始化。
- 分词器:使用与
bert-base-uncased
相同的分词器。
💻 使用示例
基础用法
from transformers import AutoModelForMaskedLM, BertTokenizer
model_name = "eli4s/Bert-L12-h240-A12"
model = AutoModelForMaskedLM.from_pretrained(model_name)
tokenizer = BertTokenizer.from_pretrained(model_name)
import torch
sentence = "Let's have a [MASK]."
model.eval()
inputs = tokenizer([sentence], padding='longest', return_tensors='pt')
output = model(inputs['input_ids'], attention_mask=inputs['attention_mask'])
mask_index = inputs['input_ids'].tolist()[0].index(103)
masked_token = output['logits'][0][mask_index].argmax(axis=-1)
predicted_token = tokenizer.decode(masked_token)
print(predicted_token)
高级用法
top_n = 5
vocab_size = model.config.vocab_size
logits = output['logits'][0][mask_index].tolist()
top_tokens = sorted(list(range(vocab_size)), key=lambda i:logits[i], reverse=True)[:top_n]
tokenizer.decode(top_tokens)
🔧 技术细节
该模型基于 BERT 架构,但在隐藏层大小和注意力头大小上进行了调整。隐藏层大小为 240,注意力头数量为 12,每个头的大小为 20。知识蒸馏过程中使用了多种损失函数,以提高模型的性能。模型的权重是从头开始初始化的,而分词器则沿用了 bert-base-uncased
的分词器。