Функция tensordot
Функция tensordot вычисляет тензорное скалярное произведение
двух массивов, суммируя произведения элементов по указанным осям.
Первый параметр - первый массив, второй - второй массив.
Третий параметр определяет оси, по которым производится свёртка.
Если передать целое число, оно задаёт количество последних осей
первого и первых осей второго массива, участвующих в свёртке.
При передаче кортежа можно указать конкретные оси для каждого массива.
Синтаксис
np.tensordot(a, b, axes=2)
Пример
Давайте вычислим тензорное произведение двух двумерных массивов с суммированием по последней оси первого и первой оси второго:
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8], [9, 10], [11, 12]])
res = np.tensordot(arr1, arr2, axes=1)
print(res)
Результат выполнения кода:
[[ 58 64]
[139 154]]
Пример
Теперь выполним тензорное произведение двух двумерных массивов с явным указанием осей для свёртки:
import numpy as np
arr1 = np.array([[1, 2], [3, 4], [5, 6]])
arr2 = np.array([[7, 8, 9], [10, 11, 12]])
res = np.tensordot(arr1, arr2, axes=([1], [0]))
print(res)
Результат выполнения кода:
[[ 27 30 33]
[ 61 68 75]
[ 95 106 117]]
Пример
Рассмотрим работу функции с трёхмерными массивами, где свёртка выполняется по двум осям:
import numpy as np
arr1 = np.arange(24).reshape(2, 3, 4)
arr2 = np.arange(24).reshape(3, 2, 4)
res = np.tensordot(arr1, arr2, axes=([1, 2], [0, 2]))
print(res)
Результат выполнения кода:
[[ 880 1000]
[1960 2200]]