объяснение метода тензорный.kruskal_to_tensor () - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь понять метод tl.kruskal_to_tensor () в тензорном пакете. На веб-странице я понимаю, что она принимает в качестве входных данных список матриц и создает тензор, чьи cp-разложения являются матрицами? Он принимает в качестве входных данных список матриц.

Но я видел следующий код:

import tensorly as tl
rank =5
dim1= 9
dim2=8
dim3=7
A= tl.tensor(np.random.normal(0,1,[dim1,rank]))
B= tl.tensor(np.random.normal(0,1,[dim2,rank]))
C= tl.tensor(np.random.normal(0,1,[dim3,rank]))

T_approx_old = tl.kruskal_to_tensor((np.ones(rank),[A,B,C]))

Я не понимаю аргумент np.ones (rank) в методе.

Что это делает?

1 Ответ

0 голосов
/ 27 марта 2020

Эта версия kruskal_to_tensor задокументирована в dev-версии API .

np.ones соответствует весу тензора Крускала: тензор Крускала выражает тензор как взвешенная сумма тензоров ранга один (внешнее произведение векторов, собранных в виде столбцов факторных матриц). В вашем случае все веса сумм являются единицами и накапливаются в этом векторе.

Обратите внимание, что вы можете нормализовать множителей вашего тензора Крускала и поглотить их величину в весах этих тезисов. .

...