如何获取BioGPT模型最后一层首个token的向量嵌入?
问题解答
你要找的目标向量嵌入就是
out.hidden_states元组的最后一个元素。具体说明:
- BioGPT基于GPT-2架构,当调用模型时设置
output_hidden_states=True,返回的hidden_states是一个元组,包含嵌入层输出 + 所有Transformer decoder层的输出。你看到的长度为25的元组,对应1个嵌入层加24层Transformer decoder,最后一个元素就是最后一层Transformer的输出。 - 这个最后一层的输出就是全连接层(生成logits的词汇映射层)之前的token向量嵌入,形状正好是你预期的
[2, 1024, 1024]。 - 关于你提到的
last_hidden_state:部分模型(如BERT)会直接返回这个键,但BioGPT这类GPT-2系因果语言模型的实现中,没有单独返回该键,需要手动从hidden_states元组取最后一个元素。
- BioGPT基于GPT-2架构,当调用模型时设置
代码示例:
# 获取最后一层的token向量嵌入 last_layer_embeddings = out.hidden_states[-1] print(last_layer_embeddings.shape) # 输出: torch.Size([2, 1024, 1024])
内容的提问来源于stack exchange,提问作者Penguin
相关产品推荐
相关产品推荐

