class_docstr: Bottleneck V1 from `"Deep Residual Learning for Image Recognition"
  <http://arxiv.org/abs/1512.03385>`_ paper.
  This is used for ResNet V1 for 50, 101, 152 layers.
class_docstr_tok: ["Bottleneck","V1","from","`","``","Deep","Residual","Learning","for","Image","Recognition","''","<","http",":","\/\/arxiv.org\/abs\/1512.03385",">","`","_","paper",".","This","is","used","for","ResNet","V1","for","50",",","101",",","152","layers","."]
code: def __init__(
      self, channels, stride, downsample=True, in_channels=0, **kwargs
  ):
      super(BottleneckV1, self).__init__(**kwargs)
      self.body = nn.HybridSequential(prefix="")
      self.body.add(
          nn.Conv2D(channels // 4, kernel_size=1, strides=stride)
      )
      self.body.add(nn.Activation("relu"))
      self.body.add(_conv3x3(channels // 4, 1, channels // 4))
      self.body.add(nn.Activation("relu"))
      self.body.add(nn.Conv2D(channels, kernel_size=1, strides=1))
      if downsample:
          self.downsample = nn.HybridSequential(prefix="")
          self.downsample.add(
              nn.Conv2D(
                  channels,
                  kernel_size=1,
                  strides=stride,
                  use_bias=False,
                  in_channels=in_channels,
              )
          )
      else:
          self.downsample = None
  
imports: from __future__ import absolute_import
  import os
  import mxnet
  from mxnet import autograd
  from mxnet.gluon import nn
  from mxnet.gluon.contrib.nn import SyncBatchNorm
  from mxnet.gluon.nn import BatchNorm
  from mxnet.gluon.block import HybridBlock
  from .rcnn_target import RCNNTargetSampler, RCNNTargetGenerator
  from ..rcnn import custom_rcnn_fpn
  from ....model_zoo.rcnn import RCNN
  from ....model_zoo.rcnn.rpn import RPN
label_desc: Use image node_id 1 to create a new BottleneckV1 object from inherited base classes: HybridBlock with example: obj = BottleneckV1(channels, stride, downsample, in_channels)