code: def __init__(
      self,
      in_channels,
      out_channels,
      max_text_length,
      num_heads,
      num_encoder_TUs,
      num_decoder_TUs,
      hidden_dims,
      **kwargs,
  ):
      super(SRNHead, self).__init__()
      self.char_num = out_channels
      self.max_length = max_text_length
      self.num_heads = num_heads
      self.num_encoder_TUs = num_encoder_TUs
      self.num_decoder_TUs = num_decoder_TUs
      self.hidden_dims = hidden_dims
  
      self.pvam = PVAM(
          in_channels=in_channels,
          char_num=self.char_num,
          max_text_length=self.max_length,
          num_heads=self.num_heads,
          num_encoder_tus=self.num_encoder_TUs,
          hidden_dims=self.hidden_dims,
      )
  
      self.gsrm = GSRM(
          in_channels=in_channels,
          char_num=self.char_num,
          max_text_length=self.max_length,
          num_heads=self.num_heads,
          num_encoder_tus=self.num_encoder_TUs,
          num_decoder_tus=self.num_decoder_TUs,
          hidden_dims=self.hidden_dims,
      )
      self.vsfd = VSFD(in_channels=in_channels, char_num=self.char_num)
  
      self.gsrm.wrap_encoder1.prepare_decoder.emb0 = (
          self.gsrm.wrap_encoder0.prepare_decoder.emb0
      )
  
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 .self_attention import WrapEncoderForFeature
  from .self_attention import WrapEncoder
  from paddle.static import Program
  from ppocr.modeling.backbones.rec_resnet_fpn import ResNetFPN
  from collections import OrderedDict
label_desc: Use image node_id 1 to create a new SRNHead object from inherited base classes: nn with example: obj = SRNHead(in_channels, out_channels, max_text_length, num_heads, num_encoder_TUs, num_decoder_TUs, hidden_dims)