code: def __init__(
      self,
      inplanes: int,
      planes: int,
      stride: Union[int, Tuple[int, int]] = 1,
      downsample: Optional[Module] = None,
  ) -> None:
      super().__init__()
  
      self.bn1 = nn.BatchNorm2d(inplanes)
      self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1)
      self.bn2 = nn.BatchNorm2d(planes)
      self.conv2 = nn.Conv2d(
          planes, planes, kernel_size=3, stride=stride, padding=1
      )
      self.bn3 = nn.BatchNorm2d(planes)
      self.conv3 = nn.Conv2d(planes, planes * 2, kernel_size=1)
      self.relu = nn.ReLU(inplace=True)
      self.downsample = downsample
      self.stride = stride
  
imports: from typing import Any, Dict, List, NamedTuple, Optional, Tuple, Type, Union
  import torch
  import torch.nn.functional
  from torch import nn
  from torch.nn.functional import pixel_shuffle, softmax
  from kornia.core import Module, Tensor
label_desc: Use image node_id 1 to create a new Bottleneck2D object from inherited base classes: Module with example: obj = Bottleneck2D(inplanes, planes, stride, downsample)