按照huggangingface上的说明文档,进行一 一 学习的
dmis-lab/biobert-v1.1 · Hugging Face
BertConfig:
包含BERT模型所有配置参数的类。它定义了模型的大小,例如隐藏层的数量、注意力头的数量等。
BertTokenizer:
负责将文本转换为模型可以理解的token(词或子词单元)的类。
BertTokenizerFast:
是BertTokenizer
的快速版本,使用Rust来提高tokenization的速度。
TFBertTokenizer:
TensorFlow版本的BERT tokenizer,用于在TensorFlow框架中使用BERT。
Bert specific outputs:
指的是BERT模型执行不同任务时返回的特定输出结构。
BertModel:
BERT模型的核心类,可以输出多种格式的隐藏状态,用于不同的任务。
import torch
from transformers import AutoTokenizer, AutoModel
'''AutoModel.from_pretrained加载的是一个未经修改的BERT模型,其标准输出通常只包含最后一层的隐藏状态'''
'''最后一层的隐藏状态,就是嵌入向量(embedding vector)的进一步处理,这些向量现在不仅包含了每个 token 的信息,还融合了整个句子的上下文信息 '''
tokenizer = AutoTokenizer.from_pretrained("dmis-lab/biobert-v1.1")
model = AutoModel.from_pretrained("dmis-lab/biobert-v1.1")
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state
# print(last_hidden_states)
print(last_hidden_states.shape)
'''
last_hidden_states 是一个三维的张量(Tensor),其维度通常是 [batch_size, sequence_length, hidden_size]
batch_size 是输入的句子数量。例子中,因为只有一个句子,所以这个维度是 1。
sequence_length 是分词后句子的长度。这包括特殊的开始和结束 token,比如 [CLS] 和 [SEP]。
hidden_size 是模型中每个隐藏状态的维度。对于 BERT 和 BioBERT 这类模型,这通常是一个较大的数字,如 768。
'''
# 降维,转成二维
max_hidden_state, _ = torch.max(last_hidden_states, dim=1)
# 将 max_hidden_state 转换成一维向量
one_dim_max_hidden_state = max_hidden_state.squeeze()
print(one_dim_max_hidden_state)
BertForPreTraining:
一个特别为BERT预训练设计的类,包含了MLM(掩码语言模型)和NSP(下一句预测)的头部,可以直接用于BERT的预训练。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | from transformers import AutoTokenizer, BertForPreTraining tokenizer = AutoTokenizer.from_pretrained( "dmis-lab/biobert-v1.1" ) model = BertForPreTraining.from_pretrained( "dmis-lab/biobert-v1.1" ) inputs = tokenizer( "Hello, my dog is cute" , return_tensors= "pt" ) outputs = model(**inputs) # seq_relationship_logits 和 prediction_logits 是BERT模型在预训练阶段的关键组成部分 '' ' prediction_logits通常是与掩码语言模型(MLM)任务相关的 prediction_logits包含了模型对于每个输入token的所有可能vocab词汇的预测分数 '' ' prediction_logits = outputs.prediction_logits print( 'prediction_logits' ,prediction_logits) '' ' seq_relationship_logits是与下一句预测(NSP)任务相关的 NSP任务是BERT模型在预训练阶段的一部分,模型需要预测第二句话是否是第一句话的后续 seq_relationship_logits tensor([[ 0.0281, -0.3480]], grad_fn=<AddmmBackward0>) 第一个logit(例子中是0.0281)代表模型认为第二句话是第一句话的逻辑续句的可能性。 第二个logit(例子中是-0.3480)代表模型认为第二句话与第一句话不相关的可能性。 如果第一个logit经过softmax后的概率大于第二个logit,那么模型预测第二个句子是第一个句子的后续;如果第二个logit的概率大,那么模型预测第二句话与第一句话不相关 在对话系统中判断回答是否与前一个问题相关,或者在文本分类任务中用来理解文本中句子间的逻辑关系 '' ' seq_relationship_logits = outputs.seq_relationship_logits print( 'seq_relationship_logits' ,seq_relationship_logits) |
BertLMHeadModel:
一个包含语言模型头部(通常是线性层)的BERT模型,用于根据上下文生成或预测下一个token。
BertForMaskedLM:
专门用于执行MLM任务的BERT模型,这个模型添加了一个头部,专门用于预测掩码位置的token。
BertForNextSentencePrediction:
用于执行NSP任务的BERT模型,这个模型可以预测第二个句子是否是第一个句子的逻辑后继。
BertForSequenceClassification:
这个类在BERT基础上添加了一个分类头部,用于序列级别的分类任务,例如情感分析。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!