code: def __init__(
      self,
      num_channels,
      num_filters,
      stride,
      shortcut=True,
      lr_mult=1.0,
      data_format="NCHW",
      bn_weight_decay=True,
  ):
      super().__init__()
  
      self.conv0 = ConvBNLayer(
          num_channels=num_channels,
          num_filters=num_filters,
          filter_size=1,
          act="relu",
          lr_mult=lr_mult,
          data_format=data_format,
          bn_weight_decay=bn_weight_decay,
      )
      self.conv1 = ConvBNLayer(
          num_channels=num_filters,
          num_filters=num_filters,
          filter_size=3,
          stride=stride,
          act="relu",
          lr_mult=lr_mult,
          data_format=data_format,
          bn_weight_decay=bn_weight_decay,
      )
      self.conv2 = ConvBNLayer(
          num_channels=num_filters,
          num_filters=num_filters * 4,
          filter_size=1,
          act=None,
          lr_mult=lr_mult,
          data_format=data_format,
          bn_weight_decay=bn_weight_decay,
      )
  
      if not shortcut:
          self.short = ConvBNLayer(
              num_channels=num_channels,
              num_filters=num_filters * 4,
              filter_size=1,
              stride=stride,
              lr_mult=lr_mult,
              data_format=data_format,
              bn_weight_decay=bn_weight_decay,
          )
      self.relu = nn.ReLU()
      self.shortcut = shortcut
  
imports: import math
  import paddle
  from paddle import ParamAttr
  import paddle.nn
  from paddle.nn import Conv2D, BatchNorm, Linear
  from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
  from paddle.nn.initializer import Uniform, Constant, KaimingNormal
label_desc: Use image node_id 1 to create a new BottleneckBlock object from inherited base classes: nn with example: obj = BottleneckBlock(num_channels, num_filters, stride, shortcut, lr_mult, data_format, bn_weight_decay)