tf.contrib.seq2seq.LuongAttention
Реализует вычисление оценки внимания по схеме Луонга (мультипликативная).
tf.contrib.seq2seq.LuongAttention(
num_units, memory, memory_sequence_length=None, scale=False,
probability_fn=None, score_mask_value=None, dtype=None,
custom_key_value_fn=None, name='LuongAttention'
)
Это внимание имеет две формы. Первая — стандартное внимание Луонга, как описано в:
Minh-Thang Luong, Hieu Pham, Christopher D. Manning. Эффективные подходы к вниманию в нейронных машинных переводчиках. EMNLP 2015.
Вторая форма — масштабированная, частично вдохновленная нормированной формой внимания Баданау.
Чтобы включить вторую форму, создайте объект с параметром scale=True.
| Аргументы | |
|---|---|
num_units | Глубина механизма внимания. |
memory | Память для запроса; обычно выход RNN-кодировщика. Этот тензор должен иметь форму [batch_size, max_time, ...]. |
memory_sequence_length | (необязательно) Длины последовательностей для записей в памяти. Если указаны, строки тензора памяти маскируются нулями для значений после соответствующих длин последовательностей. |
scale | Булево значение. Необходимо ли масштабировать член энергии. |
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.
Это важно для механизмов внимания, которые используют предыдущее выравнивание для вычисления выравнивания на следующем шаге (например, монотонное внимание).
По умолчанию возвращается тензор всех нулей.
| Аргументы | |
|---|---|
batch_size | int32 скаляр, размер пакета. |
dtype | Размерность. |
| Возвращаемое значение | |
|---|---|
Тензор dtype с формой [batch_size, alignments_size] (alignments_size — значения max_time). |
initial_state
initial_state(
batch_size, dtype
)
Создает начальные значения состояния для класса AttentionWrapper.
Это важно для механизмов внимания, которые используют предыдущее выравнивание для вычисления выравнивания на следующем шаге (например, монотонное внимание).
По умолчанию возвращается тот же результат, что и initial_alignments.
| Аргументы | |
|---|---|
batch_size | int32 скаляр, размер пакета. |
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/LuongAttention