code: def uttkrp(self, U, mode):
  
          
          N = self.ndim
          if mode == 1:
              R = U[1].shape[1]
          else:
              R = U[0].shape[1]
          W = np.tile(self.lmbda, 1, R)
          for i in range(mode) + range(mode + 1, N):
              W = W * dot(self.U[i].T, U[i])
          return dot(self.U[mode], W)
docs: Unfolded tensor times Khatri-Rao product for Kruskal tensors
  
          Parameters
          ----------
          X : tensor_mixin
              Tensor whose unfolding should be multiplied.
          U : list of array_like
              Matrices whose Khatri-Rao product should be multiplied.
          mode : int
              Mode in which X should be unfolded.
  
          See also
          --------
          sktensor.sptensor.uttkrp : Efficient computation of uttkrp for sparse tensors
          ttensor.uttkrp : Efficient computation of uttkrp for Tucker operators