РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
227 of 824 menu

Класс Attention

Класс Attention реализует механизм внимания (attention) в TensorFlow. Слой вычисляет взвешенную сумму значений на основе запросов и ключей. Первым параметром передается размерность выходного пространства units. Параметр use_scale определяет, нужно ли создавать обучаемый масштабирующий коэффициент для запроса. Параметр score_mode задает способ вычисления оценки внимания. Параметр dropout задает долю отключаемых весов. Параметр seed фиксирует генератор случайных чисел.

Синтаксис

tf.keras.layers.Attention( use_scale=False, score_mode="dot", dropout=0.0, seed=None, **kwargs )

Пример

Давайте создадим слой внимания и применим его к запросу и значению:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.Attention() query = tf.constant([[[1.0, 0.0], [0.0, 1.0]]]) value = tf.constant([[[1.0, 2.0], [3.0, 4.0]]]) res = layer([query, value]) print(res)

Результат выполнения кода:

tf.Tensor( [[[2. 3.] [2. 3.]]], shape=(1, 2, 2), dtype=float32)

Пример

Давайте создадим слой внимания с параметром use_scale=True и передадим ключи:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.Attention(use_scale=True) query = tf.constant([[[1.0, 0.0], [0.0, 1.0]]]) value = tf.constant([[[1.0, 2.0], [3.0, 4.0]]]) key = tf.constant([[[1.0, 0.0], [0.0, 1.0]]]) res = layer([query, value, key]) print(res)

Результат выполнения кода:

tf.Tensor( [[[2. 3.] [2. 3.]]], shape=(1, 2, 2), dtype=float32)

Пример

Давайте используем слой внимания внутри модели tf.keras.Sequential с несколькими входами:

import tensorflow as tf tf.random.set_seed(0) query = tf.keras.Input(shape=(2, 2)) value = tf.keras.Input(shape=(2, 2)) output = tf.keras.layers.Attention()([query, value]) model = tf.keras.Model(inputs=[query, value], outputs=output) q = tf.constant([[[1.0, 0.0], [0.0, 1.0]]]) v = tf.constant([[[1.0, 2.0], [3.0, 4.0]]]) res = model([q, v]) print(res)

Результат выполнения кода:

tf.Tensor( [[[2. 3.] [2. 3.]]], shape=(1, 2, 2), dtype=float32)

Смотрите также

  • класс MultiHeadAttention,
    который реализует многоголовое внимание
  • класс AdditiveAttention,
    который реализует аддитивный механизм внимания
  • класс Dense,
    который реализует полносвязный слой
  • класс Embedding,
    который преобразует индексы в плотные векторы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить