code: def _get_gaussian_kernel2d(
      kernel_size: List[int],
      sigma: List[float],
      dtype: torch.dtype,
      device: torch.device,
  ) -> Tensor:
      kernel1d_x = _get_gaussian_kernel1d(kernel_size[0], sigma[0]).to(
          device, dtype=dtype
      )
      kernel1d_y = _get_gaussian_kernel1d(kernel_size[1], sigma[1]).to(
          device, dtype=dtype
      )
      kernel2d = torch.mm(kernel1d_y[:, None], kernel1d_x[None, :])
      return kernel2d
  
imports: import warnings
  from typing import List, Optional, Tuple, Union
  import torch
  from torch import Tensor
  from torch.nn.functional import conv2d, grid_sample, interpolate, pad
label_desc: Use image node_id 36 for calling a global function with example usage: _get_gaussian_kernel2d(kernel_size, sigma, dtype, device) and returns: kernel2d