class_docstr: Unnormalized gaussian kernel
  
  .. math::
      k(|x-y|) = \exp(-|x-y|^2/(2\ell^2))
  
  where :math:`\ell` is the `lengthscale` (autodetected or given).
code: def __call__(self, dists):
      # note that lengthscale should be squared in the RBF to match the Gretton et al heuristic
      if self.lengthscale is not None:
          lengthscale = self.lengthscale
      else:
          lengthscale = dists.median()
      return torch.exp((-0.5 / lengthscale**2) * dists**2)
  
imports: from typing import Optional
  import torch
  from .None import Detector
  import torchdrift.utils
label_desc: Use image node_id 2 for calling the GaussianKernel obj's underlying member method code with example usage: obj.__call__(dists) and returns: torch