2016-04-13 27 views
0

Aşağıdaki kodu scikit-tensor'da parafa ayrıştırma için kullanıyorum. Bu kod scikit-tensör için bir örnektir. Bu kodu çalıştırdığınızda, çıkışıtensör analizi için scikit-tensör kullanımı

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 

Bu hatayı gidermek için ne yapmalıyım?

+0

nereden scikit-tensör paketini yüklemek mi? Bunu varsayılan Anaconda [paketler] (https://docs.continuum.io/anaconda/pkg-docs) 'da görmüyorum ve sadece anaconda bulutunda [burada] (https: // anaconda. org/search? q = scikit-tensor) ve bu kaynak kodudur. Python'un hangi sürümünü kullanıyorsunuz? [Pypi] (https://pypi.python.org/pypi/scikit-tensor) koduna dayanarak, 3.5'i desteklediği açık değildir. – Paul

cevap

1

Sürüm 0.1 için source code'a baktım. "Init" anahtar kelimesi için geçerli tek değerler "nvec" veya "rasgele" dir. Varsayılan "nvecs" dir. bunlardan birine çalışırsanız size hata kurtulacaksınız:

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

Ya

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

Teşekkürler, scikit-tensor kullanımı için herhangi bir belgeleriniz var mı? Bu parametreleri bilmiyorum (P, F, D, A, fit, itr, exectimes) dönüş nedir? –