class_docstr: ResNeSt Bottleneck
      
class_docstr_tok: ["ResNeSt","Bottleneck"]
code: def __init__(
      self,
      channels,
      cardinality=1,
      bottleneck_width=64,
      strides=1,
      dilation=1,
      downsample=None,
      previous_dilation=1,
      norm_layer=None,
      norm_kwargs=None,
      last_gamma=False,
      dropblock_prob=0,
      input_size=None,
      use_splat=False,
      radix=2,
      avd=False,
      avd_first=False,
      in_channels=None,
      split_drop_ratio=0,
      **kwargs,
  ):
      super(Bottleneck, self).__init__()
      group_width = (
          int(channels * (bottleneck_width / 64.0)) * cardinality
      )
      norm_kwargs = norm_kwargs if norm_kwargs is not None else {}
      self.dropblock_prob = dropblock_prob
      self.use_splat = use_splat
      self.avd = avd and (strides > 1 or previous_dilation != dilation)
      self.avd_first = avd_first
      if self.dropblock_prob > 0:
          self.dropblock1 = DropBlock(
              dropblock_prob, 3, group_width, *input_size
          )
          if self.avd:
              if avd_first:
                  input_size = _update_input_size(input_size, strides)
              self.dropblock2 = DropBlock(
                  dropblock_prob, 3, group_width, *input_size
              )
              if not avd_first:
                  input_size = _update_input_size(input_size, strides)
          else:
              input_size = _update_input_size(input_size, strides)
              self.dropblock2 = DropBlock(
                  dropblock_prob, 3, group_width, *input_size
              )
          self.dropblock3 = DropBlock(
              dropblock_prob, 3, channels * 4, *input_size
          )
      self.conv1 = nn.Conv2D(
          channels=group_width,
          kernel_size=1,
          use_bias=False,
          in_channels=in_channels,
      )
      self.bn1 = norm_layer(in_channels=group_width, **norm_kwargs)
      self.relu1 = nn.Activation("relu")
      if self.use_splat:
          self.conv2 = SplitAttentionConv(
              channels=group_width,
              kernel_size=3,
              strides=1 if self.avd else strides,
              padding=dilation,
              dilation=dilation,
              groups=cardinality,
              use_bias=False,
              in_channels=group_width,
              norm_layer=norm_layer,
              norm_kwargs=norm_kwargs,
              radix=radix,
              drop_ratio=split_drop_ratio,
              **kwargs,
          )
      else:
          self.conv2 = nn.Conv2D(
              channels=group_width,
              kernel_size=3,
              strides=1 if self.avd else strides,
              padding=dilation,
              dilation=dilation,
              groups=cardinality,
              use_bias=False,
              in_channels=group_width,
              **kwargs,
          )
          self.bn2 = norm_layer(in_channels=group_width, **norm_kwargs)
          self.relu2 = nn.Activation("relu")
      self.conv3 = nn.Conv2D(
          channels=channels * 4,
          kernel_size=1,
          use_bias=False,
          in_channels=group_width,
      )
      if not last_gamma:
          self.bn3 = norm_layer(in_channels=channels * 4, **norm_kwargs)
      else:
          self.bn3 = norm_layer(
              in_channels=channels * 4,
              gamma_initializer="zeros",
              **norm_kwargs,
          )
      if self.avd:
          self.avd_layer = nn.AvgPool2D(3, strides, padding=1)
      self.relu3 = nn.Activation("relu")
      self.downsample = downsample
      self.dilation = dilation
      self.strides = strides
  
imports: from __future__ import division
  import math
  from mxnet.context import cpu
  from mxnet.gluon import nn
  from mxnet.gluon.block import HybridBlock
  from mxnet.gluon.nn import BatchNorm
  from ..nn.dropblock import DropBlock
  from ..nn.splat import SplitAttentionConv
label_desc: Use image node_id 1 to create a new Bottleneck object from inherited base classes: HybridBlock with example: obj = Bottleneck(channels, cardinality, bottleneck_width, strides, dilation, downsample, previous_dilation, norm_layer, norm_kwargs, last_gamma, dropblock_prob, input_size, use_splat, radix, avd, avd_first, in_channels, split_drop_ratio)