Hi,
I just run the example notebook "CP-decomposition" and I got the error as below. Do you know the reason for that? The tensorly version I used is '0.4.3'.
Thank you,
X = tl.tensor(np.arange(24).reshape((3, 4, 2)))
factors = parafac(X, rank=2)
ValueError Traceback (most recent call last)
in ()
----> 1 factors = parafac(X, rank=2)
~/tensorly/tensorly/decomposition/candecomp_parafac.py in parafac(tensor, rank, n_iter_max, init, svd, tol, orthogonalise, random_state, verbose, return_errors)
164 orthogonalise = n_iter_max
165
--> 166 factors = initialize_factors(tensor, rank, init=init, svd=svd, random_state=random_state)
167 rec_errors = []
168 norm_tensor = tl.norm(tensor, 2)
~/tensorly/tensorly/decomposition/candecomp_parafac.py in initialize_factors(tensor, rank, init, svd, random_state, non_negative)
100 factors = []
101 for mode in range(tl.ndim(tensor)):
--> 102 U, _, _ = svd_fun(unfold(tensor, mode), n_eigenvecs=rank)
103
104 if tensor.shape[mode] < rank:
~/tensorly/tensorly/backend/numpy_backend.py in partial_svd(matrix, n_eigenvecs)
238 # First choose whether to use X * X.T or X.T *X
239 if dim_1 < dim_2:
--> 240 S, U = scipy.sparse.linalg.eigsh(np.dot(matrix, matrix.T.conj()), k=n_eigenvecs, which='LM')
241 S = np.sqrt(S)
242 V = np.dot(matrix.T.conj(), U * 1/S[None, :])
~/anaconda/lib/python3.6/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.py in eigsh(A, k, M, sigma, which, v0, ncv, maxiter, tol, return_eigenvectors, Minv, OPinv, mode)
1661 params = _SymmetricArpackParams(n, k, A.dtype.char, matvec, mode,
1662 M_matvec, Minv_matvec, sigma,
-> 1663 ncv, v0, maxiter, which, tol)
1664
1665 with _ARPACK_LOCK:
~/anaconda/lib/python3.6/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.py in init(self, n, k, tp, matvec, mode, M_matvec, Minv_matvec, sigma, ncv, v0, maxiter, which, tol)
511
512 _ArpackParams.init(self, n, k, tp, mode, sigma,
--> 513 ncv, v0, maxiter, which, tol)
514
515 if self.ncv > n or self.ncv <= k:
~/anaconda/lib/python3.6/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.py in init(self, n, k, tp, mode, sigma, ncv, v0, maxiter, which, tol)
319
320 if tp not in 'fdFD':
--> 321 raise ValueError("matrix type must be 'f', 'd', 'F', or 'D'")
322
323 if v0 is not None:
ValueError: matrix type must be 'f', 'd', 'F', or 'D'