class_docstr: Alternating Least Square to solve Canonical Polyadic Decompositon.
  
      
docstr: Sequential Khatri-Rao product without the `n`-th matrix in the reverse order.
  
  Args:
      A (list of numpy.ndarray): matrices where the number of columns for each matrix is the same.
      n (int): N-th matrix which is omitted when computing Khatri-Rao product.
  
  Returns:
      numpy.ndarray: Result of the reduction of Khatri-Rao product for `A`.
docstr_tok: ["Sequential","Khatri-Rao","product","without","the","`","n","`","-th","matrix","in","the","reverse","order",".","Args",":","A","(","list","of","numpy.ndarray",")",":","matrices","where","the","number","of","columns","for","each","matrix","is","the","same",".","n","(","int",")",":","N-th","matrix","which","is","omitted","when","computing","Khatri-Rao","product",".","Returns",":","numpy.ndarray",":","Result","of","the","reduction","of","Khatri-Rao","product","for","`","A","`","."]
code: def khatrirao_products(self, A, n, reverse=True):
      """Sequential Khatri-Rao product without the `n`-th matrix in the reverse order.
  
      Args:
          A (list of numpy.ndarray): matrices where the number of columns for each matrix is the same.
          n (int): N-th matrix which is omitted when computing Khatri-Rao product.
  
      Returns:
          numpy.ndarray: Result of the reduction of Khatri-Rao product for `A`.
      """
      order = list(range(n)) + list(range(n + 1, len(A)))
      order = sorted(order, reverse=reverse)
      Z = reduce(
          lambda X, Y: self.khatrirao_product(X, Y),
          [A[o] for o in order],
      )
      return Z
  
file_path: nnabla/python/src/nnabla/utils/factorization/cpd.py
imports: from functools import reduce
  import numpy
  from scipy.linalg import pinv
label_desc: Use image node_id 4 for calling the ALS obj's underlying member method code with example usage: obj.khatrirao_products(A, n, reverse) and returns: Z