#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 @ разложенный тензор, операции