tf.contrib.seq2seq.BahdanauМонотонноеВнимания
Монотонный механизм внимания с функцией энергии в стиле Баданау.
tf.contrib.seq2seq.BahdanauMonotonicAttention(
num_units, memory, memory_sequence_length=None, normalize=False,
score_mask_value=None, sigmoid_noise=0.0, sigmoid_noise_seed=None,
score_bias_init=0.0, mode='parallel', dtype=None,
name='BahdanauMonotonicAttention'
)
Этот тип внимания накладывает монотонное ограничение на распределения внимания; то есть, как только модель обратит внимание на определённую точку в памяти, она не может обращать внимание на какие-либо предыдущие точки в последующие моменты времени. Это достигается использованием _monotonic_probability_fn вместо softmax для построения распределений внимания. Поскольку оценки внимания передаются через сигмоиду, после функции оценки и перед сигмоидой применяется обучаемый скалярный смещающий параметр. В противном случае он эквивалентен BahdanauAttention. Этот подход предложен в
Colin Raffel, Minh-Thang Luong, Peter J. Liu, Ron J. Weiss, Douglas Eck, «Онлайн и линейное по времени внимание посредством принудительного монотонного выравнивания». ICML 2017. https://arxiv.org/abs/1704.00784
| Аргументы | |
|---|---|
num_units | Глубина механизма запроса. |
memory | Память для запроса; обычно выход RNN-кодера. Этот тензор должен иметь форму [batch_size, max_time, ...]. memory_sequence_length (необязательно): Длины последовательностей для элементов пакетной обработки в памяти. Если указано, строки тензора памяти маскируются нулями для значений, следующих за соответствующими длинами последовательностей. |
normalize | Логическое значение Python. Нормализовать ли член энергии. |
score_mask_value | (необязательно): Значение маски для оценки перед передачей в probability_fn. По умолчанию -inf. Используется только если memory_sequence_length не равно None. |
sigmoid_noise | Стандартное отклонение шума перед сигмоидой. Смотрите строку документации для _monotonic_probability_fn для получения дополнительной информации. |
sigmoid_noise_seed | (необязательно) Псевдослучайное семя для шума перед сигмоидой. |
score_bias_init | Начальное значение скалярного смещения оценки. Рекомендуется инициализировать его отрицательным значением, когда длина памяти велика. |
mode | Способ вычисления распределения внимания. Должно быть одно из 'recursive', 'parallel' или 'hard'. См. строку документации для tf.contrib.seq2seq.monotonic_attention для получения дополнительной информации. |
dtype | Тип данных для слоев запроса и памяти механизма внимания. |
name | Имя для использования при создании операций. |
| Атрибуты | |
|---|---|
alignments_size | |
batch_size | |
keys | |
memory_layer | |
query_layer | |
state_size | |
values | |
Методы
initial_alignments
initial_alignments(
batch_size, dtype
)
Создаёт начальные значения выравнивания для монотонного внимания.
Инициализируется дираковскими распределениями, т.е. [1, 0, 0, ...длина памяти..., 0] для всех записей в пакете.
| Аргументы | |
|---|---|
batch_size | int32 скаляр, размер пакета. |
dtype | dtype. |
| Возвращаемое значение | |
|---|---|
Тензор dtype формы [batch_size, alignments_size] (alignments_size — max_time значений). |
initial_state
initial_state(
batch_size, dtype
)
Создаёт начальные значения состояния для класса AttentionWrapper.
Это важно для AttentionMechanisms, которые используют предыдущее выравнивание для расчёта выравнивания на следующем шаге (например, монотонное внимание).
По умолчанию возвращается тот же результат, что и initial_alignments.
| Аргументы | |
|---|---|
batch_size | int32 скаляр, размер пакета. |
dtype | dtype. |
| Возвращаемое значение | |
|---|---|
Структура тензоров со значениями нуля, с формами, описанными в state_size. |
__call__
__call__(
query, state
)
Оценка запроса на основе ключей и значений.
| Аргументы | |
|---|---|
query | Тензор типа, соответствующего self.values и формы [batch_size, query_depth]. |
state | Тензор типа, соответствующего self.values и формы [batch_size, alignments_size] (alignments_size — max_time памяти). |
| Возвращаемое значение | |
|---|---|
alignments | Тензор типа, соответствующего self.values и формы [batch_size, alignments_size] (alignments_size — max_time памяти). |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/seq2seq/BahdanauMonotonicAttention