code: def _generate_normal_resblock_config(self):
      configs = []
  
      name = self.name
      num_filters = self.config["num-filters"]
      assert self.config["num-bottleneck-filters"] == -1
      height = self.config["height"]
      input_descriptor = self.descriptors["input"]["final-string"]
      allow_zero_padding = self.config["allow-zero-padding"]
      height_period = self.config["height-period"]
      time_period = self.config["time-period"]
  
      # input -> relu1 -> batchnorm1 -> conv1 -> relu2 -> batchnorm2 -> conv2
      cur_descriptor = input_descriptor
      for n in [1, 2]:
          # the ReLU
          configs.append(
              "component name={0}.relu{1} type=RectifiedLinearComponent "
              "dim={2} block-dim={3} self-repair-scale={4} "
              "self-repair-lower-threshold={5}".format(
                  name,
                  n,
                  num_filters * height,
                  num_filters,
                  self.config["self-repair-scale"],
                  self.config[
                      "self-repair-lower-threshold{0}".format(n)
                  ],
              )
          )
          configs.append(
              "component-node name={0}.relu{1} component={0}.relu{1} "
              "input={2}".format(name, n, cur_descriptor)
          )
  
          cur_descriptor = "{0}.relu{1}".format(name, n)
  
          # the batch-norm
          configs.append(
              "component name={0}.batchnorm{1}  type=BatchNormComponent dim={2} "
              "block-dim={3}".format(
                  name, n, num_filters * height, num_filters
              )
          )
          configs.append(
              "component-node name={0}.batchnorm{1} component={0}.batchnorm{1} "
              "input={2}".format(name, n, cur_descriptor)
          )
          cur_descriptor = "{0}.batchnorm{1}".format(name, n)
  
          # the convolution.
          a = []
          for opt_name in [
              "param-stddev",
              "bias-stddev",
              "use-natural-gradient",
              "max-change",
              "rank-in",
              "rank-out",
              "num-minibatches-history",
              "alpha-in",
              "alpha-out",
              "l2-regularize",
          ]:
              value = self.config[opt_name]
              if value != "":
                  a.append("{0}={1}".format(opt_name, value))
          conv_opts = (
              "height-in={h} height-out={h} height-offsets=-{hp},0,{hp} "
              "time-offsets=-{p},0,{p} "
              "num-filters-in={f} num-filters-out={f} {r} {o}".format(
                  h=height,
                  hp=height_period,
                  p=time_period,
                  f=num_filters,
                  r=(
                      "required-time-offsets=0"
                      if allow_zero_padding
                      else ""
                  ),
                  o=" ".join(a),
              )
          )
  
          configs.append(
              "component name={0}.conv{1} type=TimeHeightConvolutionComponent "
              "{2}".format(name, n, conv_opts)
          )
          configs.append(
              "component-node name={0}.conv{1} component={0}.conv{1} "
              "input={2}".format(name, n, cur_descriptor)
          )
          cur_descriptor = "{0}.conv{1}".format(name, n)
  
      if self.config["bypass-source"] == "noop":
          dim = self.descriptors["input"]["dim"]
          configs.append(
              "component name={0}.noop dim={1} type=NoOpComponent".format(
                  name, dim
              )
          )
          configs.append(
              "component-node name={0}.noop component={0}.noop "
              "input=Sum({1}, {0}.conv2)".format(name, input_descriptor)
          )
  
      # Note: the function 'output_name' is responsible for returning the
      # descriptor corresponding to the output of the network.
      return configs
  
imports: from __future__ import print_function
  from __future__ import division
  import math
  import re
  import sys
  from libs.nnet3.xconfig.basic_layers import XconfigLayerBase
label_desc: Use image node_id 9 for calling the XconfigResBlock obj's underlying member method code with example usage: obj._generate_normal_resblock_config() and returns: configs