You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于BERT模型output_attentions索引及最后一层注意力热图的问询

BERT output_attentions的索引对应关系

当你给BERT模型设置output_attentions=True后,返回的output_attentions是按从第一层到最后一层的顺序排列的注意力权重列表:

  • output_attentions[0] 对应模型的第一层注意力
  • output_attentions[-1] 对应模型的最后一层注意力(也就是你要用来画热力图的目标层)

举个实际代码示例,快速获取最后一层注意力权重:

from transformers import BertModel, BertTokenizer
import torch

# 加载模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased', output_attentions=True)

# 输入示例文本
text = "Hello, this is a test sentence"
inputs = tokenizer(text, return_tensors="pt")

# 前向传播得到输出
with torch.no_grad():
    outputs = model(**inputs)

# 提取最后一层注意力权重
last_layer_attn = outputs.attentions[-1]
# 形状说明:(批量大小, 注意力头数量, 序列长度, 序列长度)

如果要绘制热力图,可以从last_layer_attn里取出单个样本、单个注意力头的权重矩阵(比如last_layer_attn[0][0].numpy()),再用seaborn的heatmap函数可视化即可。


内容的提问来源于stack exchange,提问作者Mara de Jess Garcia Santiago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:52:34