🚀 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
的分詞器。