class_docstr: ResNetV1b BottleneckV1b
      
code: def __init__(
      self,
      planes,
      strides=1,
      dilation=1,
      downsample=None,
      previous_dilation=1,
      norm_layer=None,
      norm_kwargs=None,
      last_gamma=False,
      **kwargs,
  ):
      super(BottleneckV1b, self).__init__()
      norm_kwargs = norm_kwargs if norm_kwargs is not None else {}
      self.conv1 = nn.Conv2D(
          channels=planes, kernel_size=1, use_bias=False
      )
      self.bn1 = norm_layer(in_channels=planes, **norm_kwargs)
      self.relu1 = nn.Activation("relu")
      self.conv2 = nn.Conv2D(
          channels=planes,
          kernel_size=3,
          strides=strides,
          padding=dilation,
          dilation=dilation,
          use_bias=False,
      )
      self.bn2 = norm_layer(in_channels=planes, **norm_kwargs)
      self.relu2 = nn.Activation("relu")
      self.conv3 = nn.Conv2D(
          channels=planes * 4, kernel_size=1, use_bias=False
      )
      if not last_gamma:
          self.bn3 = norm_layer(in_channels=planes * 4, **norm_kwargs)
      else:
          self.bn3 = norm_layer(
              in_channels=planes * 4,
              gamma_initializer="zeros",
              **norm_kwargs,
          )
      self.relu3 = nn.Activation("relu")
      self.downsample = downsample
      self.dilation = dilation
      self.strides = strides
  
imports: from __future__ import division
  from mxnet.context import cpu
  from mxnet.gluon.block import HybridBlock
  from mxnet.gluon import nn
  from mxnet.gluon.nn import BatchNorm
label_desc: Use image node_id 1 to create a new BottleneckV1b object from inherited base classes: HybridBlock with example: obj = BottleneckV1b(planes, strides, dilation, downsample, previous_dilation, norm_layer, norm_kwargs, last_gamma)