code: def _configure_normalization(
      self, x_ref: torch.Tensor, eps: float = 1e-12
  ):
      x_ref_means = x_ref.mean(0)
      x_ref_stds = x_ref.std(0)
      self._normalize = lambda x: (torch.as_tensor(x) - x_ref_means) / (
          x_ref_stds + eps
      )
      self._unnormalize = (
          lambda x: (
              torch.as_tensor(x) * (x_ref_stds + eps) + x_ref_means
          )
          .cpu()
          .numpy()
      )
  
file_path: alibi-detect/alibi_detect/cd/pytorch/lsdd.py
imports: import numpy
  import torch
  from typing import Callable, Dict, Optional, Tuple, Union
  from alibi_detect.cd.base import BaseLSDDDrift
  from alibi_detect.utils.pytorch import get_device
  from alibi_detect.utils.pytorch.kernels import GaussianRBF
  from alibi_detect.utils.pytorch.distance import permed_lsdds
  from alibi_detect.utils.warnings import deprecated_alias
  from alibi_detect.utils.frameworks import Framework
  from alibi_detect.utils._types import TorchDeviceType
label_desc: Use image node_id 3 for calling the LSDDDriftTorch obj's underlying member method code with example usage: obj._configure_normalization(x_ref, eps) without return types