Описание метода 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
соответствует весу тензора Крускала: тензор Крускала выражает тензор как взвешенную сумму тензоров ранга один (внешнее произведение векторов, собранных в виде столбцов факторных матриц). В вашем случае веса суммы равны единице и накапливаются в этом векторе единиц.
Обратите внимание, что вы можете нормализовать факторы вашего тензора Крускала и включить их величину в эти веса.