code: def forward(self, inp: Tensor) -> Tensor:
      if inp.size(1) != self.in_features:
          fmt = "Expected {} feature channels in input, got {}"
          msg = fmt.format(self.in_features, inp.size(1))
          raise ValueError(msg)
  
      input_size_divisor = 2 ** len(self.up)
      if (inp.size(2) % input_size_divisor != 0) or (
          inp.size(3) % input_size_divisor != 0
      ):
          raise ValueError(
              f"Input image shape must be divisible by {input_size_divisor} (got {inp.size()}). "
              "This is not inherent to DISK, but to the U-Net architecture used in pretrained models. "
              "Please pad if necessary."
          )
  
      features = [inp]
      for layer in self.path_down:
          features.append(layer(features[-1]))
  
      f_bot = features[-1]
      features_horizontal = features[-2::-1]
  
      for layer, f_hor in zip(self.path_up, features_horizontal):
          f_bot = layer(f_bot, f_hor)
  
      return f_bot
  
file_path: kornia/kornia/feature/disk/_unets/unet.py
imports: from __future__ import annotations
  from torch import nn
  from kornia.core import Module, Tensor
  from .blocks import ThinUnetDownBlock, ThinUnetUpBlock
label_desc: Use image node_id 2 for calling the Unet obj's underlying member method code with example usage: obj.forward(inp) and returns: f_bot