假设下面显示的张量是由3个单词(batch_size = 3)组成的两个句子(max_lenght = 2)的表示,每个单词由从神经网络输出的维度等于5 (hidden_size = 5)的向量表示:
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]]])还要考虑以下注意力得分:
att_scores
# tensor([[0.2425, 0.5279, 0.2295],
# [0.2461, 0.4789, 0.2751]])哪种有效的方法允许通过att_scores加权获得net_output中的向量聚合,从而得到形状为(2,5)的向量?
发布于 2021-05-05 01:16:29
这应该是可行的:
weighted = (net_output * att_scores[..., None]).sum(axis = 1)使用广播(按元素)将每个向量的注意力权重相乘,并将所有向量聚合(通过求和)成批。
https://stackoverflow.com/questions/67389071
复制相似问题