code: def resnet_bottleneck(l, ch_out, stride, stride_first=False):
      """
      stride_first: original resnet put stride on first conv. fb.resnet.torch put stride on second conv.
      """
      shortcut = l
      l = Conv2D(
          "conv1",
          l,
          ch_out,
          1,
          strides=stride if stride_first else 1,
          activation=BNReLU,
      )
      l = Conv2D(
          "conv2",
          l,
          ch_out,
          3,
          strides=1 if stride_first else stride,
          activation=BNReLU,
      )
      l = Conv2D(
          "conv3", l, ch_out * 4, 1, activation=get_bn(zero_init=True)
      )
      out = l + resnet_shortcut(
          shortcut,
          ch_out * 4,
          stride,
          activation=get_bn(zero_init=False),
      )
      return tf.nn.relu(out)
  
file_path: tensorpack/examples/ResNet/resnet_model.py
imports: import tensorflow
  from tensorpack import tfv1
  from tensorpack.models import BatchNorm, BNReLU, Conv2D, FullyConnected, GlobalAvgPooling, MaxPooling
  from tensorpack.tfutils.argscope import argscope, get_arg_scope
label_desc: Use image node_id 8 for calling a global function with example usage: resnet_bottleneck(l, ch_out, stride, stride_first) and returns: tf