code: def compute_stats_np(self, embedding):
      # calculate multivariate Gaussian distribution
      B, C, H, W = embedding.shape
      mean = paddle.mean(embedding, axis=0)
      embedding = embedding.reshape((B, C, H * W)).numpy()
      inv_covariance = np.empty((H * W, C, C), dtype="float32")
      I = np.identity(C)
      for i in tqdm(range(H * W)):
          inv_covariance[i, :, :] = np.linalg.inv(
              np.cov(embedding[:, :, i], rowvar=False) + 0.01 * I
          )
      inv_covariance = paddle.to_tensor(
          inv_covariance.reshape(H, W, C, C)
      ).astype("float32")
      self.set_dist_params(mean, inv_covariance)
  
imports: import numpy
  from tqdm import tqdm
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle.vision.models.resnet import resnet18, resnet50, wide_resnet50_2
  from scipy.ndimage import gaussian_filter
  from qinspector.cvlib.workspace import register
  from qinspector.uad.utils.utils import cdist, cholesky_inverse, mahalanobis, mahalanobis_einsum, orthogonal, svd_orthogonal
  from qinspector.uad.utils.k_center_greedy import KCenterGreedy
label_desc: Use image node_id 13 for calling the PaDiMPlus obj's underlying member method code with example usage: obj.compute_stats_np(embedding) without return types