class_docstr: A bottleneck layer that reduces the resolution of the feature map.
  
  Args:
      in_channels (int): Number of channels of input arrays.
      mid_channels (int): Number of channels of intermediate arrays.
      out_channels (int): Number of channels of output arrays.
      stride (int or tuple of ints): Stride of filter application.
      initialW (4-D array): Initial weight value used in
          the convolutional layers.
      downsample_fb (bool): If this argument is specified as ``False``,
          it performs downsampling by placing stride 2
          on the 1x1 convolutional layers (the original MSRA ResNet).
          If this argument is specified as ``True``, it performs downsampling
          by placing stride 2 on the 3x3 convolutional layers
          (Facebook ResNet).
class_docstr_tok: ["A","bottleneck","layer","that","reduces","the","resolution","of","the","feature","map",".","Args",":","in_channels","(","int",")",":","Number","of","channels","of","input","arrays",".","mid_channels","(","int",")",":","Number","of","channels","of","intermediate","arrays",".","out_channels","(","int",")",":","Number","of","channels","of","output","arrays",".","stride","(","int","or","tuple","of","ints",")",":","Stride","of","filter","application",".","initialW","(","4-D","array",")",":","Initial","weight","value","used","in","the","convolutional","layers",".","downsample_fb","(","bool",")",":","If","this","argument","is","specified","as","``","False","``",",","it","performs","downsampling","by","placing","stride","2","on","the","1x1","convolutional","layers","(","the","original","MSRA","ResNet",")",".","If","this","argument","is","specified","as","``","True","``",",","it","performs","downsampling","by","placing","stride","2","on","the","3x3","convolutional","layers","(","Facebook","ResNet",")","."]
code: def forward(self, x):
      h1 = relu(self.bn1(self.conv1(x)))
      h1 = relu(self.bn2(self.conv2(h1)))
      h1 = self.bn3(self.conv3(h1))
      h2 = self.bn4(self.conv4(x))
      return relu(h1 + h2)
  
imports: import collections
  import os
  import sys
  import warnings
  import numpy
  import chainer
  from chainer.dataset.convert import concat_examples
  from chainer.dataset import download
  from chainer import function
  from chainer.functions.activation.relu import relu
  from chainer.functions.activation.softmax import softmax
  from chainer.functions.array.reshape import reshape
  from chainer.functions.math.sum import sum
  from chainer.functions.pooling.average_pooling_2d import average_pooling_2d
  from chainer.functions.pooling.max_pooling_nd import max_pooling_2d
  from chainer.initializers import constant
  from chainer.initializers import normal
  from chainer import link
  from chainer.links.connection.convolution_2d import Convolution2D
  from chainer.links.connection.linear import Linear
  from chainer.links.normalization.batch_normalization import BatchNormalization
  from chainer.serializers import npz
  from chainer.utils import argument
  from chainer.utils import imgproc
  from chainer.variable import Variable
label_desc: Use image node_id 2 for calling the BottleneckA obj's underlying member method code with example usage: obj.forward(x) and returns: relu