Функция tensordot
Функция tensordot вычисляет тензорное
произведение двух тензоров по указанным осям.
Первым параметром передается первый тензор
a, вторым - второй тензор b,
третьим - оси axes. Параметр axes
может быть целым числом, списком или кортежем
из двух списков. Если задано целое число N,
то суммирование производится по последним
N осям тензора a и первым
N осям тензора b.
Синтаксис
tf.tensordot(a, b, axes)
Пример
Давайте вычислим тензорное произведение
двух двумерных тензоров с осями 1:
import tensorflow as tf
a = tf.constant([[1, 2, 3], [4, 5, 6]])
b = tf.constant([[1, 2, 3], [4, 5, 6]])
res = tf.tensordot(a, b, axes=1)
print(res)
Результат выполнения кода:
tf.Tensor(
[[14 32 50]
[32 77 122]], shape=(2, 3), dtype=int32)
Пример
Давайте вычислим тензорное произведение
с осями 0:
import tensorflow as tf
a = tf.constant([[1, 2, 3], [4, 5, 6]])
b = tf.constant([[1, 2, 3], [4, 5, 6]])
res = tf.tensordot(a, b, axes=0)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[ 1 2 3]
[ 4 5 6]]
[[ 2 4 6]
[ 8 10 12]]
[[ 3 6 9]
[12 15 18]]]
[[[ 4 8 12]
[16 20 24]]
[[ 5 10 15]
[20 25 30]]
[[ 6 12 18]
[24 30 36]]]], shape=(2, 3, 2, 3), dtype=int32)
Пример
Давайте вычислим тензорное произведение с явным указанием осей в виде списка:
Результат выполнения кода:
tf.Tensor(
[[14 32]
[32 77]], shape=(2, 2), dtype=int32)
Пример
Давайте вычислим тензорное произведение двух трехмерных тензоров по двум осям:
import tensorflow as tf
a = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
b = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
res = tf.tensordot(a, b, axes=2)
print(res)
Результат выполнения кода:
tf.Tensor(
[[ 30 70]
[ 70 174]], shape=(2, 2), dtype=int32)
Смотрите также
-
функцию
matmul,
которая выполняет матричное умножение тензоров -
функцию
einsum,
которая вычисляет выражение Эйнштейна над тензорами -
функцию
multiply,
которая выполняет поэлементное умножение тензоров -
функцию
reduce_sum,
которая вычисляет сумму элементов тензора