Использовать scikit-тензор для тензорного анализа

Я использую приведенный ниже код для разложения парафаков в scikit-тензор. Этот код является примером для scikit-тензор.

from sktensor import dtensor, cp_als, parafac2, tucker_hooi
import numpy
import sktensor

T=dtensor(numpy.arange(100).reshape(2, 5,10))
print (type(T))

P, F, D, A, fit, itr, exectimes = parafac2.parafac2(T, 3, init=3, ma_iter=5, conv= 4)

Когда я запускаю этот код, вывод...

Traceback (most recent call last):
  File "C:/Users/meghdad/PycharmProjects/tensorInPython/dtensor1.py", line 17, in <module>
    P, F, D, A, fit, itr, exectimes = parafac2.parafac2(T, 3, init=3, ma_iter=5, conv= 4)
  File "C:\Anaconda3\lib\site-packages\scikit_tensor-0.1-py3.5.egg\sktensor\parafac2.py", line 50, in parafac2
  File "C:\Anaconda3\lib\site-packages\scikit_tensor-0.1-py3.5.egg\sktensor\parafac2.py", line 113, in __init
UnboundLocalError: local variable 'F' referenced before assignment

Что мне сделать, чтобы устранить эту ошибку?

1 ответ

Решение

Я посмотрел на исходный код для версии 0.1. Единственными допустимыми значениями для ключевого слова init являются nvecs или random. По умолчанию это "nvecs". Если вы попробуете любой из них, вы избавитесь от своей ошибки:

P, F, D, A, fit, itr, exectimes = parafac2.parafac2(T, 3, init='nvecs', ma_iter=5, conv= 4)

Или же

P, F, D, A, fit, itr, exectimes = parafac2.parafac2(T, 3, init='random', ma_iter=5, conv= 4)
Другие вопросы по тегам