【NLP基础知识-bert向量化】BERT模型输出pooler_output和last_hidden_state详解和用法

【NLP基础知识-bert向量化】BERT模型输出pooler_output和last_hidden_state详解和用法
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1. 基本介绍

  BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言表示模型,由Google在2018年提出。它通过使用Transformer架构的编码器部分,能够捕捉到文本的双向上下文信息。BERT模型在自然语言处理(NLP)领域取得了革命性的进展,为各种下游任务提供了强大的基础。

1.1 BERT的关键特点

  双向上下文理解:与传统的单向语言模型不同,BERT能够同时考虑左右两边的上下文。
预训练任务:BERT通过Masked Language Model(MLM)和Next Sentence Prediction(NSP)任务进行预训练。

1.2 BERT模型的输出

  pooler_output:这是通过将最后一层的隐藏状态的第一个token(通常是[CLS] token)通过一个线性层和激活函数得到的输出,常用于分类任务。
  last_hidden_state:这是模型所有层的最后一个隐藏状态的输出,包含了整个序列的上下文信息,适用于序列级别的任务。

💡 2. bert向量化使用方法

2.1 bert模型输出介绍

  加载bert模型输出解释如下所示,相关的代码实践如下所示:

	import tensorflow as tf
	from transformers import BertTokenizer, TFBertModel, BertModel
	# 加载BertTokenizer和BertModel
	tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
	bert_model = TFBertModel.from_pretrained('bert-base-chinese')
	# 定义输入文本
	text = '这是一个测试句子'
	# 对输入文本进行分词和填充
	encoded_input = tokenizer(text, padding=True, uncation=True, return_tensors='tf')
	# 获取Bert模型的embedding结果
	output = bert_model(encoded_input, output_hidden_states=True, output_attentions=True)
	# 输出结果
	print(output)
	# print(output.get_shape())

   其中每个输出部分的解释如下所示:

  • last_hidden_state:shape是(batch_size, sequence_length, hidden_size),hidden_size=768,它是模型最后一层输出的隐藏状态,序列标注通常用。
  • pooler_output:shape是(batch_size, hidden_size),这是序列的第一个token (cls) 的最后一层的隐藏状态,它是由线性层和Tanh激活函数进一步处理的,这个输出不是对输入的语义内容的一个很好的总结,对于整个输入序列的隐藏状态序列的平均化或池化可以更好的表示一句话。通常用来做下游分类任务使用
  • hidden_states:这是输出的一个可选项,是一个元组,它的第一个元素是embedding,其余元素是12层transformer各层的输出,每个元素的形状是(batch_size, sequence_length, hidden_size),共计13个元素,最后一个元素是last_hidden_state。
  • attentions: 它也是一个元组,含有12个元素,包含每的层注意力权重,用于计算self-attention heads的加权平均值

2.2 输出的具体用法

   last_hidden_state的输出如下所示,其中第一个红色圈就是cls的embedding,最后一个就是seq的embedding,
在这里插入图片描述

  • 取用cls的embedding可以用:output[0][:,0,:]
    在这里插入图片描述
  • 用来做分类的向量具体操作方法如下所示, output[1],取到的东西是pooler_output
    在这里插入图片描述
  • 通常取到的bert的embdedding向量的方法如下所示, output[0],其中一般在后面接一个池化层将其转为[batch_size, 768]的数据shape:
    在这里插入图片描述

🔍 3. 注意事项

  • 根据任务的需求选择适合的BERT模型版本,例如bert-base-uncased或bert-large-cased。
  • 在使用BERT时,注意[CLS]和[SEP]等特殊标记的使用,它们在模型的输入和输出中扮演重要角色。
  • BERT模型计算量大,对于大规模数据集或实时应用,可能需要使用GPU加速。
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只红花猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值