tf.keras.layers.MultiHeadAttention
Слой MultiHeadAttention.
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
)
Используется в блокнотах
| Используется в учебных материалах |
|---|
Это реализация многоголового внимания, описанного в статье «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