import torch
import torch.nn as nn
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# 通过torch.hub(pytorch中专注于迁移学习的工具)获得已经训练好的bert-base-chinese模型
model = torch.hub.load('huggingface/pytorch-transformers', 'model', 'bert-base-chinese')
# 获得对应的字符映射器,它将把中文的每个字段映射成一个数字
tokenizer = torch.hub.load('huggingface/pytorch-transformers', 'tokenizer', 'bert-base-chinese')
def a(text):
indexed_tokens = tokenizer.encode(text)[1:-1]
# 之后将列表结构转化为tensor
tokens_tensor = torch.tensor([indexed_tokens])
print(tokens_tensor)
# 使模型不自动计算梯度
with torch.no_grad():
# 调用模型获得隐层输出
encoded_layers, _ = model(tokens_tensor, return_dict=False)
# 输出的隐层是一个三维张量, 最外层一维是1, 我们使用[0]降去它.
print(encoded_layers.shape)
encoded_layers = encoded_layers[0]
return encoded_layers
text = '自定义添加'
outputs = a(text)
print(outputs)