Не могу определить ранг в разложении Такера как равный исходному измерению

Я пытаюсь применить разложение Такера на тензор 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 вызов.

Хотя точно не знаю почему, но это сработало.

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