code: def __init__(self, inplanes, planes, stride=1, downsample=False):
      super().__init__()
      self.conv1 = nn.Conv2d(
          inplanes, planes, kernel_size=1, bias=False
      )
      self.bn1 = nn.BatchNorm2d(planes)
      self.conv2 = nn.Conv2d(planes, planes, 3, stride, 1, bias=False)
      self.bn2 = nn.BatchNorm2d(planes)
      self.conv3 = nn.Conv2d(
          planes, planes * self.expansion, kernel_size=1, bias=False
      )
      self.bn3 = nn.BatchNorm2d(planes * self.expansion)
      self.relu = nn.ReLU(inplace=True)
      if downsample:
          self.downsample = nn.Sequential(
              nn.Conv2d(
                  inplanes,
                  planes * self.expansion,
                  1,
                  stride,
                  bias=False,
              ),
              nn.BatchNorm2d(planes * self.expansion),
          )
      else:
          self.downsample = nn.Sequential()
  
file_path: mmocr/mmocr/models/textrecog/layers/conv_layer.py
imports: import torch.nn
  from mmcv.cnn import build_plugin_layer
label_desc: Use image node_id 1 to create a new Bottleneck object from inherited base classes: nn with example: obj = Bottleneck(inplanes, planes, stride, downsample)