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
)
Используется в блокнотах
| Используется в учебниках |
|---|
Это реализация многоголового внимания, как описано в статье "Внимание — всё, что вам нужно" 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