tf.keras.layers.GroupQueryAttention
Слой внимания с групповыми запросами.
Наследуется от: Layer, Operation
tf.keras.layers.GroupQueryAttention(
head_dim,
num_query_heads,
num_key_value_heads,
dropout=0.0,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None,
**kwargs
)
Это реализация внимания с групповыми запросами, представленного в работе Ainslie et al., 2023. Здесь num_key_value_heads обозначает количество групп; значение num_key_value_heads, равное 1, эквивалентно вниманию с несколькими запросами, а когда num_key_value_heads равно num_query_heads, оно эквивалентно вниманию с несколькими головами.
Этот слой сначала проецирует тензоры query, key и value. Затем key и value повторяются, чтобы соответствовать количеству голов query.
Затем query масштабируется и перемножается скалярно с тензорами key. К полученным значениям применяется softmax для вычисления вероятностей внимания. Затем тензоры значений интерполируются с использованием этих вероятностей и объединяются обратно в один тензор.
| Аргументы | |
|---|---|
head_dim | Размер каждой головы внимания. |
num_query_heads | Количество голов внимания запросов. |
num_key_value_heads | Количество голов внимания ключей и значений. |
dropout | Вероятность отсева. |
use_bias | Логическое значение: использовать ли в полносвязных слоях векторы/матрицы смещений. |
kernel_initializer | Инициализатор ядер полносвязного слоя. |
bias_initializer | Инициализатор смещений полносвязного слоя. |
kernel_regularizer | Регуляризатор ядер полносвязного слоя. |
bias_regularizer | Регуляризатор смещений полносвязного слоя. |
activity_regularizer | Регуляризатор активности полносвязного слоя. |
kernel_constraint | Ограничение для ядер полносвязного слоя. |
bias_constraint | Ограничение для ядер полносвязного слоя. |
| Аргументы вызова | |
|---|---|
query | Тензор запросов формы (batch_dim, target_seq_len, feature_dim), где batch_dim — размер пакета, target_seq_len — длина целевой последовательности, а feature_dim — размерность признаков. |
value | Тензор значений формы (batch_dim, source_seq_len, feature_dim), где batch_dim — размер пакета, source_seq_len — длина исходной последовательности, а feature_dim — размерность признаков. |
key | Необязательный тензор ключей формы (batch_dim, source_seq_len, feature_dim). Если он не задан, для key и value используется value; это наиболее распространённый случай. |
attention_mask | Логическая маска формы (batch_dim, target_seq_len, source_seq_len), запрещающая обращать внимание на определённые позиции. Логическая маска задаёт, каким элементам запроса можно обращаться к каким элементам ключа: 1 означает наличие внимания, а 0 — его отсутствие. Для недостающих измерений пакета и измерения голов может применяться широковещательная передача. |
return_attention_scores | Логическое значение, указывающее, должен ли результат быть (attention_output, attention_scores), если True, или attention_output, если False. По умолчанию — False. |
training | Логическое значение Python, указывающее, должен ли слой работать в режиме обучения (с применением отсева) или в режиме вывода (без отсева). Используется режим обучения родительского слоя/модели либо False (режим вывода), если родительского слоя нет. |
use_causal_mask | Логическое значение, указывающее, следует ли применять причинно-следственную маску, чтобы запретить токенам обращаться к будущим токенам (например, в декодере Transformer). |
| Возвращаемые значения | |
|---|---|
attention_output | Результат вычисления формы (batch_dim, target_seq_len, feature_dim), где target_seq_len обозначает длину целевой последовательности, а feature_dim — последнее измерение входного запроса. |
attention_scores | (Необязательно) коэффициенты внимания формы (batch_dim, num_query_heads, target_seq_len, source_seq_len). |
| Атрибуты | |
|---|---|
input | Возвращает входной(ые) тензор(ы) символьной операции. Возвращает только тензор(ы), соответствующие первому вызову операции. |
output | Возвращает выходной(ые) тензор(ы) слоя. Возвращает только тензор(ы), соответствующие первому вызову операции. |
Методы
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/GroupQueryAttention