code: def make_stage(self, stage, groups=3):
      stage_repeats = [3, 7, 3]
      grouped_conv = stage > 2
      if groups == 1:
          out_channels = [-1, 24, 144, 288, 567]
      elif groups == 2:
          out_channels = [-1, 24, 200, 400, 800]
      elif groups == 3:
          out_channels = [-1, 24, 240, 480, 960]
      elif groups == 4:
          out_channels = [-1, 24, 272, 544, 1088]
      elif groups == 8:
          out_channels = [-1, 24, 384, 768, 1536]
      body = nn.HybridSequential()
      body.add(
          shuffleUnit(
              out_channels[stage - 1],
              out_channels[stage],
              "concat",
              groups,
              grouped_conv,
          )
      )
      for i in range(stage_repeats[stage - 2]):
          body.add(
              shuffleUnit(
                  out_channels[stage],
                  out_channels[stage],
                  "add",
                  groups,
                  True,
              )
          )
      return body
  
imports: from mxnet.context import cpu
  from mxnet.gluon import nn
  from mxnet.gluon.nn import BatchNorm
  from mxnet.gluon.block import HybridBlock
label_desc: Use image node_id 2 for calling the ShuffleNetV1 obj's underlying member method code with example usage: obj.make_stage(stage, groups) and returns: body