Описание метода tensorly.kruskal_to_tensor()

Я пытаюсь понять метод 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 ответ

Решение

Эта версия kruskal_to_tensorзадокументирован в версии API для разработчиков.

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

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

Другие вопросы по тегам