Тензорное умножение с NumPy Tensordot
У меня есть тензор U, состоящий из n матриц размерности (d, k) и матрицы V размерности (k, n).
Я хотел бы умножить их так, чтобы результат возвращал матрицу измерения (d, n), в которой столбец j является результатом умножения матрицы между матрицей j из U и столбцом j из V.
Один из возможных способов получить это:
for j in range(n):
res[:,j] = U[:,:,j] * V[:,j]
Мне интересно, если есть более быстрый подход с использованиемnumpy
библиотека. В частности, я думаю оnp.tensordot()
функция.
Этот небольшой фрагмент позволяет мне умножить одну матрицу на скаляр, но очевидное обобщение для вектора не возвращает то, на что я надеялся.
a = np.array(range(1, 17))
a.shape = (4,4)
b = np.array((1,2,3,4,5,6,7))
r1 = np.tensordot(b,a, axes=0)
Любое предложение?