code: def conv3x3_block(in_channels, out_channels, stride=1):
      n = 3 * 3 * out_channels
      w = math.sqrt(2.0 / n)
      conv_layer = nn.Conv2D(
          in_channels,
          out_channels,
          kernel_size=3,
          stride=stride,
          padding=1,
          weight_attr=nn.initializer.Normal(mean=0.0, std=w),
          bias_attr=nn.initializer.Constant(0),
      )
      block = nn.Sequential(
          conv_layer, nn.BatchNorm2D(out_channels), nn.ReLU()
      )
      return block
  
file_path: PaddleOCR/ppocr/modeling/transforms/stn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import paddle
  from paddle import nn, ParamAttr
  from paddle.nn import functional
  import numpy
  from .tps_spatial_transformer import TPSSpatialTransformer
label_desc: Use image node_id 1 for calling a global function with example usage: conv3x3_block(in_channels, out_channels, stride) and returns: block