使用 scikit-tensor 进行张量分析
use scikit-tensor for tensor analysis
我使用以下代码在 scikit-tensor 中进行 parafac 分解。此代码是 scikit-tensor 的示例。
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
我该怎么做才能解决这个错误?
我查看了 source code 版本 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)
我使用以下代码在 scikit-tensor 中进行 parafac 分解。此代码是 scikit-tensor 的示例。
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
我该怎么做才能解决这个错误?
我查看了 source code 版本 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)