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. 可選的形狀為 (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
的情況下用作隨機種子的 Python 整數。{"dot", "concat"}
。"dot"
指的是查詢和鍵向量之間的點積。"concat"
指的是 query
和 key
向量串聯的雙曲正切。調用參數
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)
的注意力輸出。(可選)形狀為 (batch_size, Tq, Tv)
的遮罩和 Softmax 之後的注意力分數。