首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注意力加权聚合

注意力加权聚合
EN

Stack Overflow用户
提问于 2021-05-05 01:00:59
回答 1查看 35关注 0票数 0

假设下面显示的张量是由3个单词(batch_size = 3)组成的两个句子(max_lenght = 2)的表示,每个单词由从神经网络输出的维度等于5 (hidden_size = 5)的向量表示:

代码语言:javascript
复制
net_output
# tensor([[[0.7718, 0.3856, 0.2545, 0.7502, 0.5844],
#          [0.4400, 0.3753, 0.4840, 0.2483, 0.4751],
#          [0.4927, 0.7380, 0.1502, 0.5222, 0.0093]],

#         [[0.5859, 0.0010, 0.2261, 0.6318, 0.5636],
#          [0.0996, 0.2178, 0.9003, 0.4708, 0.7501],
#          [0.4244, 0.7947, 0.5711, 0.0720, 0.1106]]])

还要考虑以下注意力得分:

代码语言:javascript
复制
att_scores
# tensor([[0.2425, 0.5279, 0.2295],
#         [0.2461, 0.4789, 0.2751]])

哪种有效的方法允许通过att_scores加权获得net_output中的向量聚合,从而得到形状为(2,5)的向量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 01:16:29

这应该是可行的:

代码语言:javascript
复制
weighted = (net_output * att_scores[..., None]).sum(axis = 1)

使用广播(按元素)将每个向量的注意力权重相乘,并将所有向量聚合(通过求和)成批。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67389071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档