code: def forward_features(self, x):
      x = self.patch_embed(x)
      x = x + self.pos_embed
      x = self.pos_drop(x)
      for blk in self.blocks1:
          x = blk(x)
      if self.patch_merging is not None:
          x = self.sub_sample1(
              x.transpose([0, 2, 1]).reshape(
                  [0, self.embed_dim[0], self.HW[0], self.HW[1]]
              )
          )
      for blk in self.blocks2:
          x = blk(x)
      if self.patch_merging is not None:
          x = self.sub_sample2(
              x.transpose([0, 2, 1]).reshape(
                  [0, self.embed_dim[1], self.HW[0] // 2, self.HW[1]]
              )
          )
      for blk in self.blocks3:
          x = blk(x)
      if not self.prenorm:
          x = self.norm(x)
      return x
  
imports: from paddle import ParamAttr
  from paddle.nn.initializer import KaimingNormal
  import numpy
  import paddle
  import paddle.nn
  from paddle.nn.initializer import TruncatedNormal, Constant, Normal
label_desc: Use image node_id 3 for calling the SVTRNet obj's underlying member method code with example usage: obj.forward_features(x) and returns: x