code: def pyrup(
      input: Tensor,
      border_type: str = "reflect",
      align_corners: bool = False,
  ) -> Tensor:
      r"""Upsample a tensor and then blurs it.
  
      .. image:: _static/img/pyrup.png
  
      Args:
          input: the tensor to be downsampled.
          border_type: the padding mode to be applied before convolving.
            The expected modes are: ``'constant'``, ``'reflect'``, ``'replicate'`` or ``'circular'``.
          align_corners: interpolation flag.
  
      Return:
          the downsampled tensor.
  
      Examples:
          >>> input = torch.arange(4, dtype=torch.float32).reshape(1, 1, 2, 2)
          >>> pyrup(input, align_corners=True)
          tensor([[[[0.7500, 0.8750, 1.1250, 1.2500],
                    [1.0000, 1.1250, 1.3750, 1.5000],
                    [1.5000, 1.6250, 1.8750, 2.0000],
                    [1.7500, 1.8750, 2.1250, 2.2500]]]])
      """
      KORNIA_CHECK_SHAPE(input, ["B", "C", "H", "W"])
  
      kernel: Tensor = _get_pyramid_gaussian_kernel()
      # upsample tensor
      _, _, height, width = input.shape
      # TODO: use kornia.geometry.resize/rescale
      x_up: Tensor = F.interpolate(
          input,
          size=(height * 2, width * 2),
          mode="bilinear",
          align_corners=align_corners,
      )
  
      # blurs upsampled tensor
      x_blur: Tensor = filter2d(x_up, kernel, border_type)
      return x_blur
  
imports: from __future__ import annotations
  import math
  import torch
  import torch.nn.functional
  from kornia.core import Module, Tensor, ones, pad, stack, tensor, zeros
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_IS_TENSOR, KORNIA_CHECK_SHAPE
  from kornia.filters import filter2d, gaussian_blur2d
label_desc: Use image node_id 3 for calling a global function with example usage: pyrup(input, border_type, align_corners) and returns: x_blur