code: def _get_gaussian_kernel2d(
      kernel_size: List[int],
      sigma: List[float],
      dtype: torch.dtype,
      device: torch.device,
  ) -> torch.Tensor:
      kernel1d_x = _get_gaussian_kernel1d(
          kernel_size[0], sigma[0], dtype, device
      )
      kernel1d_y = _get_gaussian_kernel1d(
          kernel_size[1], sigma[1], dtype, device
      )
      kernel2d = kernel1d_y.unsqueeze(-1) * kernel1d_x
      return kernel2d
  
imports: import math
  from typing import List, Optional
  import PIL.Image
  import torch
  from torch.nn.functional import conv2d, pad
  from torchvision import tv_tensors
  from torchvision.transforms._functional_tensor import _max_value
  from torchvision.transforms.functional import pil_to_tensor, to_pil_image
  from torchvision.utils import _log_api_usage_once
  from ._utils import _get_kernel, _register_kernel_internal
label_desc: Use image node_id 6 for calling a global function with example usage: _get_gaussian_kernel2d(kernel_size, sigma, dtype, device) and returns: kernel2d