Не могу определить ранг в разложении Такера как равный исходному измерению
Я пытаюсь применить разложение Такера на тензор T
формы (500, 500, 3, 28)
с Тензорли tucker
и я не могу определить ранги, где ранг равен исходному измерению, например:
Я могу сделать:
from tensorly.decomposition import tucker
tucker(T, [2, 2, 2, 27])
Но когда я меняю 27 на 28:
tucker(T, [2, 2, 2, 28])
Программа зависает. Есть идеи, почему это может происходить?
2 ответа
Если ранг равен исходному размеру, то разреженный SVD не может быть применен, и при развертывании требуется полный (вычислительно тяжелый) SVD. Установив init='random'
Вы обходите SVD, поэтому он быстрее.
Что работало, чтобы установить init='random'
в tucker
вызов.
Хотя точно не знаю почему, но это сработало.