class_docstr: Bottleneck building block for ResNet50, ResNet101 and ResNet152.
  
  Parameters
  ----------
  inplanes : int.
      Input channels of each block.
  planes : int.
      Output channels of each block.
  spatial_stride : int, default is 1.
      Stride in spatial dimension of convolutional layers in a block.
  temporal_stride : int, default is 1.
      Stride in temporal dimension of convolutional layers in a block.
  dilation : int, default is 1.
      Dilation of convolutional layers in a block.
  downsample : bool.
      Whether to contain a downsampling layer in the block.
  if_inflate : bool.
      Whether enable inflation of 3D convolutional layers in this block.
  inflate_style : str, default is '3x1x1'.
      How to inflate a 2D kernel, either '3x1x1' or '1x3x3'.
  if_nonlocal : bool.
      Whether to insert a non-local block after this ResNet block.
  nonlocal_cfg : dict.
      Additional `non-local` arguments, for example `nonlocal_type='gaussian'`.
  norm_layer : object
      Normalization layer used (default: :class:`mxnet.gluon.nn.BatchNorm`)
      Can be :class:`mxnet.gluon.nn.BatchNorm` or :class:`mxnet.gluon.contrib.nn.SyncBatchNorm`.
  norm_kwargs : dict
      Additional `norm_layer` arguments, for example `num_devices=4`
      for :class:`mxnet.gluon.contrib.nn.SyncBatchNorm`.
  layer_name : str, default is ''.
      Give a name to current block.
class_docstr_tok: ["Bottleneck","building","block","for","ResNet50",",","ResNet101","and","ResNet152",".","Parameters","--","--","--","--","--","inplanes",":","int",".","Input","channels","of","each","block",".","planes",":","int",".","Output","channels","of","each","block",".","spatial_stride",":","int",",","default","is","1",".","Stride","in","spatial","dimension","of","convolutional","layers","in","a","block",".","temporal_stride",":","int",",","default","is","1",".","Stride","in","temporal","dimension","of","convolutional","layers","in","a","block",".","dilation",":","int",",","default","is","1",".","Dilation","of","convolutional","layers","in","a","block",".","downsample",":","bool",".","Whether","to","contain","a","downsampling","layer","in","the","block",".","if_inflate",":","bool",".","Whether","enable","inflation","of","3D","convolutional","layers","in","this","block",".","inflate_style",":","str",",","default","is","'3x1x1","'",".","How","to","inflate","a","2D","kernel",",","either","'3x1x1","'","or","'1x3x3","'",".","if_nonlocal",":","bool",".","Whether","to","insert","a","non-local","block","after","this","ResNet","block",".","nonlocal_cfg",":","dict",".","Additional","`","non-local","`","arguments",",","for","example","`","nonlocal_type='gaussian","'","`",".","norm_layer",":","object","Normalization","layer","used","(","default",":",":","class",":","`","mxnet.gluon.nn.BatchNorm","`",")","Can","be",":","class",":","`","mxnet.gluon.nn.BatchNorm","`","or",":","class",":","`","mxnet.gluon.contrib.nn.SyncBatchNorm","`",".","norm_kwargs",":","dict","Additional","`","norm_layer","`","arguments",",","for","example","`","num_devices=4","`","for",":","class",":","`","mxnet.gluon.contrib.nn.SyncBatchNorm","`",".","layer_name",":","str",",","default","is","``",".","Give","a","name","to","current","block","."]
docstr: Hybrid forward of a ResNet bottleneck block
docstr_tok: ["Hybrid","forward","of","a","ResNet","bottleneck","block"]
code: def hybrid_forward(self, F, x):
      """Hybrid forward of a ResNet bottleneck block"""
      identity = x
      out = self.conv1(x)
      out = self.bn1(out)
      out = self.relu(out)
      out = self.conv2(out)
      out = self.bn2(out)
      out = self.relu(out)
      out = self.conv3(out)
      out = self.bn3(out)
      if self.downsample is not None:
          identity = self.downsample(x)
      out = F.Activation(out + identity, act_type="relu")
  
      if self.nonlocal_block is not None:
          out = self.nonlocal_block(out)
      return out
  
imports: from mxnet import nd
  from mxnet import init
  from mxnet.context import cpu
  from mxnet.gluon.block import HybridBlock
  from mxnet.gluon import nn
  from mxnet.gluon.nn import BatchNorm
  from ..resnetv1b import resnet50_v1b, resnet101_v1b
  from .non_local import build_nonlocal_block
label_desc: Use image node_id 2 for calling the Bottleneck obj's underlying member method code with example usage: obj.hybrid_forward(F, x) and returns: out