code: def residual_block_layer(inputs, hparams):
    
    kernel = (hparams.res_kernel_size, hparams.res_kernel_size)
    x = inputs
    for i in range(hparams.num_res_layers):
      with tf.variable_scope("res_conv_%d" % i):
        # kernel_size x kernel_size conv block
        y = common_layers.conv_block(
            common_layers.layer_norm(x, hparams.hidden_size, name="lnorm"),
            hparams.hidden_size, [((1, 1), kernel)],
            strides=(1, 1),
            padding="SAME",
            name="residual_conv")
        # 1x1 conv block
        y = common_layers.conv_block(
            y,
            hparams.hidden_size, [((1, 1), (1, 1))],
            strides=(1, 1),
            padding="SAME",
            name="residual_dense")
        x = common_layers.layer_postprocess(x, y, hparams)
    return x
docs: Residual block over inputs.
  
    Runs a residual block consisting of
      conv: kernel_size x kernel_size
      conv: 1x1
      dropout, add and normalize according to hparams.layer_postprocess_sequence.
  
    Args:
      inputs: Tensor of shape [batch, height, width, hparams.hidden_size].
      hparams: HParams.
  
    Returns:
      Tensor of shape [batch, height, width, hparams.hidden_size].