AdditiveAttention
類別keras.layers.AdditiveAttention(use_scale=True, dropout=0.0, **kwargs)
Additive 注意力層,又稱 Bahdanau 風格注意力。
輸入為包含 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)
,作為非線性總和 scores = reduce_sum(tanh(query + key), axis=-1)
。2. 使用分數計算 softmax 分佈,形狀為 (batch_size, Tq, Tv)
。3. 使用 softmax 分佈創建 value
的線性組合,形狀為 (batch_size, Tq, dim)
。
參數
True
,將創建一個純量變數來縮放注意力分數。0.0
。呼叫參數
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)
。