tf.contrib.seq2seq.BahdanauAttention
Реализует внимание по методу Баханау (аддитивное).
tf.contrib.seq2seq.BahdanauAttention(
num_units, memory, memory_sequence_length=None, normalize=False,
probability_fn=None, score_mask_value=None, dtype=None,
custom_key_value_fn=None, name='BahdanauAttention'
)
Это внимание имеет две формы. Первая — внимание Баханау, как описано в:
Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio. "Neural Machine Translation by Jointly Learning to Align and Translate." ICLR 2015. https://arxiv.org/abs/1409.0473
Вторая форма — нормализованная. Она вдохновлена статьёй о нормализации весов:
Tim Salimans, Diederik P. Kingma. "Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks." https://arxiv.org/abs/1602.07868
Чтобы включить вторую форму, постройте объект с параметром normalize=True.
| Аргументы | |
|---|---|
num_units | Глубина механизма запроса. |
memory | Память для запроса; обычно выход RNN-кодера. Этот тензор должен иметь форму [batch_size, max_time, ...]. |
memory_sequence_length | (необязательно) Длины последовательностей для записей в пачке в памяти. Если предоставлены, строки тензора памяти маскируются нулями для значений, находящихся за соответствующими длинами последовательностей. |
normalize | Логическое значение Python. Нужно ли нормализовать энергетический член. |
probability_fn | (необязательно) Функция callable. Преобразует оценку в вероятности. По умолчанию tf.nn.softmax. Другие варианты включают tf.contrib.seq2seq.hardmax и tf.contrib.sparsemax.sparsemax. Её сигнатура должна быть: probabilities = probability_fn(score). |
score_mask_value | (необязательно): значение маски для оценки перед передачей в probability_fn. По умолчанию -inf. Используется только если memory_sequence_length не равно None. |
dtype | Тип данных для слоёв запроса и памяти механизма внимания. |
custom_key_value_fn | (необязательно): пользовательская функция для вычисления ключей и значений. |
name | Имя для использования при создании операций. |
| Атрибуты | |
|---|---|
alignments_size | |
batch_size | |
keys | |
memory_layer | |
query_layer | |
state_size | |
values | |
Методы
initial_alignments
initial_alignments(
batch_size, dtype
)
Создаёт начальные значения выравнивания для класса AttentionWrapper.
Это важно для AttentionMechanisms, которые используют предыдущее выравнивание для расчёта выравнивания на следующем шаге (например, монотонное внимание).
По умолчанию возвращается тензор всех нулей.
| Аргументы | |
|---|---|
batch_size | int32 скаляр, batch_size. |
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 скаляр, batch_size. |
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/BahdanauAttention