class_docstr: 注意：原论文中，在虚线残差结构的主分支上，第一个1x1卷积层的步距是2，第二个3x3卷积层步距是1。
  但在pytorch官方实现过程中是第一个1x1卷积层的步距是1，第二个3x3卷积层步距是2，
  这么做的好处是能够在top1上提升大概0.5%的准确率。
  可参考Resnet v1.5 https://ngc.nvidia.com/catalog/model-scripts/nvidia:resnet_50_v1_5_for_pytorch
code: def call(self, inputs, training=False):
      identity = inputs
      if self.downsample is not None:
          identity = self.downsample(inputs)
  
      x = self.conv1(inputs)
      x = self.bn1(x, training=training)
      x = self.relu(x)
  
      x = self.conv2(x)
      x = self.bn2(x, training=training)
      x = self.relu(x)
  
      x = self.conv3(x)
      x = self.bn3(x, training=training)
  
      x = self.add([x, identity])
      x = self.relu(x)
  
      return x
  
file_path: deep-learning-for-image-processing/tensorflow_classification/Test5_resnet/model.py
imports: from tensorflow.keras import layers, Model, Sequential
label_desc: Use image node_id 2 for calling the Bottleneck obj's underlying member method code with example usage: obj.call(inputs, training) and returns: x