当前位置:   article > 正文

BERT模型输出pooler_output和last_hidden_state以及用法_bert得到的结果last_hidden_state和pooler_output

bert得到的结果last_hidden_state和pooler_output

#

bert模型输出解释和用法

@(作者:朝天椒)[WeChat:skyloving123||财天椒]


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())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 其中每个输出部分的解释如下所示:
  • 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的加权平均值

输出的具体用法

  • last_hidden_state的输出如下所示,其中第一个红色圈就是cls的embedding,最后一个就是seq的embedding,
    在这里插入图片描述
  • 取用cls的embedding可以用:output[0][:,0,:]
    在这里插入图片描述
  • 用来做分类的向量具体操作方法如下所示, output[1],取到的东西是pooler_output
    在这里插入图片描述
  • 通常取到的bert的embdedding向量的方法如下所示, output[0],其中一般在后面接一个池化层将其转为[batch_size, 768]的数据shape:
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/348689
推荐阅读
相关标签
  

闽ICP备14008679号