Spec-Zone.ru › TensorFlow

tf.keras.layers.MultiHeadAttention

Слой многоголового внимания.

Наследуется от: Layer, Operation

tf.keras.layers.MultiHeadAttention(
    num_heads,
    key_dim,
    value_dim=None,
    dropout=0.0,
    use_bias=True,
    output_shape=None,
    attention_axes=None,
    kernel_initializer='glorot_uniform',
    bias_initializer='zeros',
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    **kwargs
)

Используется в блокнотах

Используется в учебниках
  • Подпись изображений с визуальным вниманием
  • Нейронный машинный перевод с вниманием
  • Нейронный машинный перевод с Трансформером и Keras

Это реализация многоголового внимания, как описано в статье "Внимание — всё, что вам нужно" Vaswani et al., 2017. Если query, key, и value одинаковы, то это самовнимание. Каждый временной шаг в query обращает внимание на соответствующую последовательность в key и возвращает вектор фиксированной ширины.

Этот слой сначала проецирует query, key и value. Это (в сущности) список тензоров длиной num_attention_heads, где соответствующие формы равны (batch_size, <query dimensions>, key_dim), (batch_size, <key/value dimensions>, key_dim), (batch_size, <key/value dimensions>, value_dim).

Затем тензоры запроса и ключа перемножаются точечно и масштабируются. Они подвергаются функции softmax, чтобы получить вероятности внимания. Затем тензоры значений интерполируются по этим вероятностям, а затем конкатенируются обратно в один тензор.

Наконец, результирующий тензор с последним измерением как value_dim может пройти линейное проектирование и вернуть результат.

Аргументы
num_heads Количество головок внимания.
key_dim Размер каждой головки внимания для запроса и ключа.
value_dim Размер каждой головки внимания для значения.
dropout Вероятность дропаута.
use_bias Булево значение, определяющее, используют ли плотные слои векторы/матрицы смещения.
output_shape Ожидаемая форма выходного тензора, помимо размерностей пакет и последовательность. Если не указано, возвращается к размерности признаков запроса (последнему измерению входных данных запроса).
attention_axes Оси, по которым применяется внимание. None означает внимание по всем осям, кроме пакет, головки и признаков.
kernel_initializer Инициализатор для ядер плотных слоёв.
bias_initializer Инициализатор для смещений плотных слоёв.
kernel_regularizer Регуляризатор для ядер плотных слоёв.
bias_regularizer Регуляризатор для смещений плотных слоёв.
activity_regularizer Регуляризатор для активности плотного слоя.
kernel_constraint Ограничение для ядер плотного слоя.
bias_constraint Ограничение для ядер плотного слоя.
Аргументы вызова
query Тензор запроса размерностью (B, T, dim), где B — размер пакета, T — длина целевой последовательности, а dim — размерность признака.
value Тензор значения размерностью (B, S, dim), где B — размер пакета, S — длина исходной последовательности, а dim — размерность признака.
key Необязательный тензор ключа размерностью (B, S, dim). Если не задан, будет использоваться value для обоих key и value, что является наиболее распространённым случаем.
attention_mask Булево значение маски размерностью (B, T, S), предотвращающее внимание к определённым позициям. Булевая маска определяет, к каким элементам запроса могут обращаться элементы ключа, 1 указывает внимание, 0 — отсутствие внимания. Вещание может происходить для отсутствующих размерностей пакета и размерности головки.
return_attention_scores Булево значение, указывающее, должен ли выходной сигнал быть (attention_output, attention_scores), если True, или attention_output, если False. По умолчанию False.
training Булево значение, указывающее, должен ли слой работать в режиме обучения (добавляя дропаут) или в режиме вывода (без дропаута). Будет использовать либо режим обучения родительского слоя/модели, либо False (вывод), если родительского слоя нет.
use_causal_mask Булево значение, указывающее, следует ли применять причинную маску, чтобы предотвратить токенам обращаться к будущим токенам (например, используется в декодере Трансформера).
Возвращаемое значение
attention_output Результат вычислений размерностью (B, T, E), где T — для форм целевой последовательности, а E — последняя размерность входных данных запроса, если output_shape равно None. В противном случае выходные данные многоголового внимания проектируются на форму, заданную output_shape.
attention_scores (Необязательно) коэффициенты многоголового внимания по осям внимания.
Атрибуты
attention_axes
dropout
input Извлекает входной(ые) тензор(ы) символьной операции.

Возвращает только тензор(ы), соответствующий(ие) первому вызову операции.

key_dense
key_dim
num_heads
output Извлекает выходной(ые) тензор(ы) слоя.

Возвращает только тензор(ы), соответствующий(ие) первому вызову операции.

output_dense
output_shape
query_dense
use_bias
value_dense
value_dim

Методы

from_config

Просмотреть исходный код

@classmethod
from_config(
    config
)

Создаёт слой из его конфигурации.

Этот метод — обратный к get_config, способный создать тот же слой из словаря конфигурации. Он не обрабатывает соединение слоёв (это обрабатывается Network), а также веса (это обрабатывается set_weights).

Аргументы
config Словарь Python, обычно результат get_config.
Возвращаемое значение
Экземпляр слоя.

symbolic_call

Просмотреть исходный код

symbolic_call(
    *args, **kwargs
)

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/layers/MultiHeadAttention

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API