Spec-Zone.ru › TensorFlow

tf.keras.layers.MultiHeadAttention

Слой 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
)

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

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

Это реализация многоголового внимания, описанного в статье «Attention is all you Need» Vaswani et al., 2017. Если query, key, value совпадают, используется self-attention. На каждом временном шаге 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).

Затем для тензоров query и key вычисляется скалярное произведение, которое масштабируется. К полученным значениям применяется softmax, чтобы получить вероятности внимания. После этого тензоры value интерполируются с помощью этих вероятностей, а затем объединяются в один тензор.

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

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