Как выполнить einsum для разложенных тензорных операций?

#numpy #tensorflow #tensor #numpy-einsum #tensorly

Вопрос:

Я пытаюсь измерить скорость выполнения np.einsum('bcd,bce,bef->df' tensor1, tensor2, tensor1) np.einsum('...->...', decomposed_tensor1, tensor2, decomposed_tensor1) операций между и. Метод декомпозиции, который я использую, заключается в tensorly.decomposition.tucker

Однако для разложенных тензорных операций тензора довольно сложно следовать индексам, которые я должен суммировать.

Ниже приведены размеры тензоров и разложенных тензоров.

 from tensorly.decomposition import tucker
import numpy as np

d1, d2, d3 = 256, 4, 12

# the tensor of interest 
tensor1 = np.random.rand(d1, d2, d3)

# a tensor with appropriate dimensions to perform operations
tensor2 = np.random.rand(d1, d2, d2)

# tensor1, tensor2, tensor1 operation
tens1Tens2tens1 = np.einsum('ilk,ilm,imp->kp', tensor1, tensor2, tensor1, optimize='optimal')

# tucker decomposition of the tensor1
rank_tucker = (8,4,2)
core, factors = tucker(tensor1, rank_tucker)
print("Core Dimension:tt",core.shape)
print("Factors Dimensions:t", [f.shape for f in factors])

# decomposed_tensor1, tensor2, decomposed_tensor1
# decTens1tens2decTens1 = np.einsum('...->...', core, factors, tensor2, core, factors)
 

Из:

 Core Dimension:      (8, 4, 2)
Factors Dimensions:  [(256, 8), (4, 4), (12, 2)]
 

Может ли кто-нибудь подсказать мне, как я должен выполнять эти разложенные тензорные и тензорные операции ?

Спасибо.

Комментарии:

1. Чего вы пытаетесь достичь с помощью этой декомпозиции матрицы?

2. @Иван, как я также указывал в своем посте, я измеряю производительность ускорения тензорной декомпозиции. Таким образом, сравнение скорости в тензор1 @ тензор2 @ тензор1 против разложенного тензора@ тензор2 @ разложенный тензор, операции