code: def gaussian_blur(x: Tensor, severity: int = 1) -> Tensor:
      """Applies gaussian blur"""
      imagenet_sigma = [1, 2, 3, 4, 6]
      cifar_sigma = [0.4, 0.6, 0.7, 0.8, 1]
      sigma = interpolate_severity(
          x, cifar_sigma, imagenet_sigma, severity
      )
  
      n, channels, h, w = x.shape
      width = int(math.ceil(sigma * 5))
      width = width + (width + 1) % 2  # we want an odd size
  
      distance = torch.arange(
          -(width // 2),
          width // 2 + 1,
          dtype=torch.float,
          device=x.device,
      )
      gaussian = torch.exp(
          -(distance[:, None] ** 2 + distance[None] ** 2)
          / (2 * sigma**2)
      )
      gaussian /= gaussian.sum()
      channels = x.size(1)
      kernel = gaussian[None, None].expand(channels, -1, -1, -1)
      return torch.nn.functional.conv2d(
          x, kernel, padding=width // 2, groups=channels
      )
  
file_path: TorchDrift/torchdrift/data/functional/corruption_functions.py
imports: from torch import Tensor
  import torch
  import math
  import torchdrift.utils
label_desc: Use image node_id 7 for calling a global function with example usage: gaussian_blur(x, severity) and returns: torch