'Bottleneck residual unit with 3 sub layers, plan B shortcut.'

def _bottleneck_residual_v2(self, x, in_filter, out_filter, stride, activate_before_residual=False):

    with tf.name_scope('bottle_residual_v2') as name_scope:
        if activate_before_residual:
            x = self._batch_norm(x)
            x = self._relu(x)
            orig_x = x
        else:
            orig_x = x
            x = self._batch_norm(x)
            x = self._relu(x)
        x = self._conv(x, 1, (out_filter // 4), stride, is_atrous=True)
        x = self._batch_norm(x)
        x = self._relu(x)
        x = self._conv(x, 3, (out_filter // 4), 1, is_atrous=True)
        x = self._batch_norm(x)
        x = self._relu(x)
        x = self._conv(x, 1, out_filter, 1, is_atrous=True)
        if (in_filter != out_filter):
            orig_x = self._conv(orig_x, 1, out_filter, stride, is_atrous=True)
        x = tf.add(x, orig_x)
        tf.logging.info('image    after    unit    %s:    %s', name_scope, x.get_shape())
        return x
