Класс Dot
Класс Dot вычисляет скалярное произведение между
элементами двух входных тензоров одинаковой формы.
Слой принимает список из двух тензоров, перемножает
их поэлементно и суммирует результат по последней оси.
Первым параметром передается список входных тензоров,
вторым можно указать оси нормализации.
Синтаксис
tf.keras.layers.Dot(axes, normalize=False)
Пример
Давайте создадим слой Dot и применим его к двум
тензорам одинаковой формы:
import tensorflow as tf
layer = tf.keras.layers.Dot(axes=1)
t1 = tf.constant([[1, 2, 3], [4, 5, 6]])
t2 = tf.constant([[1, 2, 3], [4, 5, 6]])
res = layer([t1, t2])
print(res)
Результат выполнения кода:
tf.Tensor([14 77], shape=(2,), dtype=int32)
Пример
Давайте создадим слой Dot с нормализацией,
чтобы получить косинусную близость между векторами:
import tensorflow as tf
layer = tf.keras.layers.Dot(axes=1, normalize=True)
t1 = tf.constant([[1.0, 2.0, 3.0]])
t2 = tf.constant([[4.0, 5.0, 6.0]])
res = layer([t1, t2])
print(res)
Результат выполнения кода:
tf.Tensor([0.9746318], shape=(1,), dtype=float32)
Смотрите также
-
слой
Dense,
который выполняет линейное преобразование -
слой
Multiply,
который поэлементно перемножает входные тензоры -
слой
Concatenate,
который объединяет тензоры по заданной оси -
слой
Add,
который поэлементно складывает входные тензоры