Attention
类keras.layers.Attention(
use_scale=False, score_mode="dot", dropout=0.0, seed=None, **kwargs
)
点积注意力层,也称为 Luong-style 注意力。
输入是包含 2 或 3 个元素的列表: 1. 形状为 (batch_size, Tq, dim)
的 query
张量。 2. 形状为 (batch_size, Tv, dim)
的 value
张量。 3. 可选的形状为 (batch_size, Tv, dim)
的 key
张量。如果未提供,则 value
将用作 key
。
计算步骤如下: 1. 使用 query
和 key
计算注意力得分,形状为 (batch_size, Tq, Tv)
。 2. 使用得分计算 softmax 分布,形状为 (batch_size, Tq, Tv)
。 3. 使用 softmax 分布创建 value
的线性组合,形状为 (batch_size, Tq, dim)
。
参数
True
,将创建一个标量变量来缩放注意力得分。0.0
。dropout
时用作随机种子。{"dot", "concat"}
。"dot"
表示 query 和 key 向量之间的点积。"concat"
表示 query
和 key
向量拼接后的双曲正切。调用参数
query
: 形状为 (batch_size, Tq, dim)
的 Query 张量。value
: 形状为 (batch_size, Tv, dim)
的 Value 张量。key
: 可选的形状为 (batch_size, Tv, dim)
的 Key 张量。如果未提供,则 value
将同时用作 key
和 value
,这是最常见的情况。query_mask
: 形状为 (batch_size, Tq)
的布尔掩码张量。如果给定,则在 mask==False
的位置输出将为零。value_mask
: 形状为 (batch_size, Tv)
的布尔掩码张量。如果给定,将应用掩码,使得在 mask==False
位置的值不影响结果。True
,将注意力得分(在掩码和 softmax 之后)作为附加输出参数返回。True
。添加一个掩码,使得位置 i
不能关注位置 j > i
。这可以防止信息从未来流向过去。默认为 False
。输出: 注意力输出,形状为 (batch_size, Tq, dim)
。(可选) 掩码和 softmax 后的注意力得分,形状为 (batch_size, Tq, Tv)
。