code: def conv_bn_layer(
      self,
      input,
      num_filters,
      filter_size,
      stride=1,
      groups=1,
      act=None,
      name=None,
  ):
      conv = fluid.layers.conv2d(
          input=input,
          num_filters=num_filters,
          filter_size=filter_size,
          stride=stride,
          padding=(filter_size - 1) // 2,
          groups=groups,
          act=None,
          param_attr=fluid.param_attr.ParamAttr(name=name + "_weights"),
          bias_attr=False,
      )
      if name == "conv1":
          bn_name = "bn_" + name
      else:
          bn_name = "bn" + name[3:]
  
      return fluid.layers.batch_norm(
          input=conv,
          act=act,
          is_test=(not self.is_training),
          param_attr=fluid.param_attr.ParamAttr(
              name=bn_name + "_scale"
          ),
          bias_attr=fluid.param_attr.ParamAttr(bn_name + "_offset"),
          moving_mean_name=bn_name + "_mean",
          moving_variance_name=bn_name + "_variance",
      )
  
file_path: PaddleHub/modules/video/classification/videotag_tsn_lstm/resource/models/tsn/tsn_res_model.py
imports: import os
  import time
  import sys
  import paddle.fluid
  import math
label_desc: Use image node_id 2 for calling the TSN_ResNet obj's underlying member method code with example usage: obj.conv_bn_layer(input, num_filters, filter_size, stride, groups, act, name) and returns: fluid