tensorly.parafac2_tensor
.parafac2_to_slices
- parafac2_to_slices(parafac2_tensor, validate=True)[source]
Generate all slices along the first mode from a PARAFAC2 tensor.
Generates a list of all slices from a PARAFAC2 tensor. A list is returned since the tensor might have varying size along the second mode. To return a tensor, see the
parafac2_to_tensor
function instead.shapeThe decomposition is on the form \((A [B_i] C)\) such that the i-th frontal slice, \(X_i\), of \(X\) is given by
\[X_i = B_i diag(a_i) C^T,\]where \(diag(a_i)\) is the diagonal matrix whose nonzero entries are equal to the \(i\)-th row of the \(I \times R\) factor matrix \(A\), \(B_i\) is a \(J_i \times R\) factor matrix such that the cross product matrix \(B_{i_1}^T B_{i_1}\) is constant for all \(i\), and \(C\) is a \(K \times R\) factor matrix. To compute this decomposition, we reformulate the expression for \(B_i\) such that
\[B_i = P_i B,\]where \(P_i\) is a \(J_i \times R\) orthogonal matrix and \(B\) is a \(R \times R\) matrix.
An alternative formulation of the PARAFAC2 decomposition is that the tensor element \(X_{ijk}\) is given by
\[X_{ijk} = \sum_{r=1}^R A_{ir} B_{ijr} C_{kr},\]with the same constraints hold for \(B_i\) as above.
- Parameters:
- parafac2_tensorParafac2Tensor - (weight, factors, projection_matrices)
- weights1D array of shape (rank, )
weights of the factors
- factorsList of factors of the PARAFAC2 decomposition
Contains the matrices \(A\), \(B\) and \(C\) described above
- projection_matricesList of projection matrices used to create evolving
factors.
- Returns:
- List[ndarray]
A list of full tensors of shapes [P[i].shape[1], C.shape[1]], where P is the projection matrices and C is the last factor matrix of the Parafac2Tensor.