Attention 类keras.layers.Attention(
use_scale=False, score_mode="dot", dropout=0.0, seed=None, **kwargs
)
点积注意力层,又称 Luong 风格注意力。
输入是一个包含 2 或 3 个元素的列表: 1. 形状为 (batch_size, Tq, dim) 的 query 张量。 2. 形状为 (batch_size, Tv, dim) 的 value 张量。 3. 可选的 key 张量,形状为 (batch_size, Tv, dim)。如果未提供,则 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" 指的是查询和键向量之间的点积。 "concat" 指的是查询和键向量连接后的双曲正切。调用参数
query:形状为 (batch_size, Tq, dim) 的查询张量。value:形状为 (batch_size, Tv, dim) 的值张量。key:可选的键张量,形状为 (batch_size, Tv, dim)。如果未给出,将同时使用 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)。