tf.keras.layers.GroupQueryAttention
Слой группированной запросовой (query) внимательности.
Наследуется от: 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 и др., 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 | Вероятность отбрасывания (dropout). |
use_bias | Булево значение, указывает, используют ли слои Dense смещения. |
kernel_initializer | Инициализатор для ядер слоя Dense. |
bias_initializer | Инициализатор для смещений слоя Dense. |
kernel_regularizer | Регуляризатор для ядер слоя Dense. |
bias_regularizer | Регуляризатор для смещений слоя Dense. |
activity_regularizer | Регуляризатор для активности слоя Dense. |
kernel_constraint | Ограничение для ядер слоя Dense. |
bias_constraint | Ограничение для ядер слоя Dense. |
| Аргументы вызова | |
|---|---|
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). Если не указан, используется value для обоих key и 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 | Булево значение, указывающее, должен ли слой работать в режиме обучения (добавление dropout) или в режиме вывода (без dropout). Будет использоваться либо режим обучения родительского слоя/модели, либо 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, способное создать тот же слой из словаря конфигурации. Он не обрабатывает соединение слоёв (это обрабатывается сетью), а также веса (это обрабатывается 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