💻 源码
from transformers import BertTokenizer, BertForMaskedLM
import torch


# 指定模型方式
def dm03():
    # 加载模型和分词器
    tokenizer = BertTokenizer.from_pretrained("../models/chinese-bert-wwm")
    model = BertForMaskedLM.from_pretrained("../models/chinese-bert-wwm")
    # 准备数据
    input = tokenizer.encode_plus("我想明天去[MASK]家吃饭", return_tensors='pt')
    print("input-->", input)
    # 把数据送给模型
    output = model(**input)
    # 打印结果
    # print("output-->", output)
    # print("output-->", output.last_hidden_state.shape) # [1, 11, 768]
    # print("output-->", output.pooler_output.shape) # [1, 768]

    # [1, 11, 21128]:1句话,11个token,每个token用一个21128的向量表示
    # 含义是:需要基于MASK的位置,从21128个词表中,还原到预测的结果token(词)
    print("output.logits-->", output.logits, output.logits.shape)
    # [11, 21128] -> output.logits[0]
    # [21128] -> output.logits[0][6]
    # print(output.logits[0][6].shape)
    # item:由张量转标量
    index = torch.argmax(output.logits[0][6]).item()
    print("index-->", index)
    # 把下标index从词表中还原成具体的token
    token = tokenizer.convert_ids_to_tokens([index])
    print("token-->", token)


if __name__ == '__main__':
    dm03()