class_docstr: @inproceedings{Yulitehrnet21,
  title={Lite-HRNet: A Lightweight High-Resolution Network},
      author={Yu, Changqian and Xiao, Bin and Gao, Changxin and Yuan, Lu and Zhang, Lei and Sang, Nong and Wang, Jingdong},
      booktitle={CVPR},year={2021}
  }
  Args:
      network_type (str): the network_type should be one of ["lite_18", "lite_30", "naive", "wider_naive"],
          "naive": Simply combining the shuffle block in ShuffleNet and the highresolution design pattern in HRNet.
          "wider_naive": Naive network with wider channels in each block.
          "lite_18": Lite-HRNet-18, which replaces the pointwise convolution in a shuffle block by conditional channel weighting.
          "lite_30": Lite-HRNet-30, with more blocks compared with Lite-HRNet-18.
      freeze_at (int): the stage to freeze
      freeze_norm (bool): whether to freeze norm in HRNet
      norm_decay (float): weight decay for normalization layer weights
      return_idx (List): the stage to return
class_docstr_tok: ["@","inproceedings","{","Yulitehrnet21",",","title=","{","Lite-HRNet",":","A","Lightweight","High-Resolution","Network","}",",","author=","{","Yu",",","Changqian","and","Xiao",",","Bin","and","Gao",",","Changxin","and","Yuan",",","Lu","and","Zhang",",","Lei","and","Sang",",","Nong","and","Wang",",","Jingdong","}",",","booktitle=","{","CVPR","}",",","year=","{","2021","}","}","Args",":","network_type","(","str",")",":","the","network_type","should","be","one","of","[","``","lite_18","''",",","``","lite_30","''",",","``","naive","''",",","``","wider_naive","''","]",",","``","naive","''",":","Simply","combining","the","shuffle","block","in","ShuffleNet","and","the","highresolution","design","pattern","in","HRNet",".","``","wider_naive","''",":","Naive","network","with","wider","channels","in","each","block",".","``","lite_18","''",":","Lite-HRNet-18",",","which","replaces","the","pointwise","convolution","in","a","shuffle","block","by","conditional","channel","weighting",".","``","lite_30","''",":","Lite-HRNet-30",",","with","more","blocks","compared","with","Lite-HRNet-18",".","freeze_at","(","int",")",":","the","stage","to","freeze","freeze_norm","(","bool",")",":","whether","to","freeze","norm","in","HRNet","norm_decay","(","float",")",":","weight","decay","for","normalization","layer","weights","return_idx","(","List",")",":","the","stage","to","return"]
code: def forward(self, inputs):
      x = inputs["image"]
      dims = x.shape
      if len(dims) == 5:
          x = paddle.reshape(
              x, (dims[0] * dims[1], dims[2], dims[3], dims[4])
          )  # [6, 3, 128, 96]
  
      x = self.stem(x)
      y_list = [x]
      for stage_idx in range(3):
          x_list = []
          transition = getattr(self, "transition{}".format(stage_idx))
          for j in range(self.stages_config["num_branches"][stage_idx]):
              if transition[j] is not None:
                  if j >= len(y_list):
                      x_list.append(transition[j](y_list[-1]))
                  else:
                      x_list.append(transition[j](y_list[j]))
              else:
                  x_list.append(y_list[j])
          y_list = getattr(self, "stage{}".format(stage_idx))(x_list)
      x = self.head_layer(y_list)
      res = []
      for i, layer in enumerate(x):
          if i == self.freeze_at:
              layer.stop_gradient = True
          if i in self.return_idx:
              res.append(layer)
      return res
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from numbers import Integral
  from paddle import ParamAttr
  from paddle.regularizer import L2Decay
  from paddle.nn.initializer import Normal, Constant
  from ppdet.core.workspace import register
  from ppdet.modeling.shape_spec import ShapeSpec
  from ppdet.modeling.ops import channel_shuffle
  from ..None import layers
label_desc: Use image node_id 4 for calling the LiteHRNet obj's underlying member method code with example usage: obj.forward(inputs) and returns: res