class_docstr: Modified Aligned Xception
      
class_docstr_tok: ["Modified","Aligned","Xception"]
code: def __init__(
      self,
      classes=1000,
      output_stride=32,
      norm_layer=nn.BatchNorm,
      norm_kwargs=None,
  ):
      super(Xception71, self).__init__()
      norm_kwargs = norm_kwargs if norm_kwargs is not None else {}
      if output_stride == 32:
          entry_block3_stride = 2
          exit_block20_stride = 2
          middle_block_dilation = 1
          exit_block_dilations = (1, 1)
      elif output_stride == 16:
          entry_block3_stride = 2
          exit_block20_stride = 1
          middle_block_dilation = 1
          exit_block_dilations = (1, 2)
      elif output_stride == 8:
          entry_block3_stride = 1
          exit_block20_stride = 1
          middle_block_dilation = 2
          exit_block_dilations = (2, 4)
      else:
          raise NotImplementedError
      # Entry flow
      with self.name_scope():
          self.conv1 = nn.Conv2D(
              in_channels=3,
              channels=32,
              kernel_size=3,
              strides=2,
              padding=1,
              use_bias=False,
          )
          self.bn1 = norm_layer(in_channels=32, **norm_kwargs)
          self.relu = nn.Activation("relu")
  
          self.conv2 = nn.Conv2D(
              in_channels=32,
              channels=64,
              kernel_size=3,
              strides=1,
              padding=1,
              use_bias=False,
          )
          self.bn2 = norm_layer(in_channels=64)
  
          self.block1 = Block(
              64,
              128,
              reps=2,
              stride=2,
              norm_layer=norm_layer,
              norm_kwargs=norm_kwargs,
              start_with_relu=False,
          )
          self.block2 = nn.HybridSequential()
  
          self.block2.add(
              Block(
                  128,
                  256,
                  reps=2,
                  stride=1,
                  norm_layer=norm_layer,
                  norm_kwargs=norm_kwargs,
                  start_with_relu=False,
                  grow_first=True,
              )
          )
          self.block2.add(
              Block(
                  256,
                  256,
                  reps=2,
                  stride=2,
                  norm_layer=norm_layer,
                  norm_kwargs=norm_kwargs,
                  start_with_relu=False,
                  grow_first=True,
              )
          )
          self.block2.add(
              Block(
                  256,
                  728,
                  reps=2,
                  stride=2,
                  norm_layer=norm_layer,
                  norm_kwargs=norm_kwargs,
                  start_with_relu=False,
                  grow_first=True,
              )
          )
          self.block3 = Block(
              728,
              728,
              reps=2,
              stride=entry_block3_stride,
              norm_layer=norm_layer,
              norm_kwargs=norm_kwargs,
              start_with_relu=True,
              grow_first=True,
              is_last=True,
          )
          # Middle flow
          self.midflow = nn.HybridSequential()
          for i in range(4, 20):
              self.midflow.add(
                  (
                      Block(
                          728,
                          728,
                          reps=3,
                          stride=1,
                          dilation=middle_block_dilation,
                          norm_layer=norm_layer,
                          norm_kwargs=norm_kwargs,
                          start_with_relu=True,
                          grow_first=True,
                      )
                  )
              )
  
          # Exit flow
          self.block20 = Block(
              728,
              1024,
              reps=2,
              stride=exit_block20_stride,
              dilation=exit_block_dilations[0],
              norm_layer=norm_layer,
              norm_kwargs=norm_kwargs,
              start_with_relu=True,
              grow_first=False,
              is_last=True,
          )
  
          self.conv3 = SeparableConv2d(
              1024,
              1536,
              3,
              stride=1,
              dilation=exit_block_dilations[1],
              norm_layer=norm_layer,
              norm_kwargs=norm_kwargs,
          )
          self.bn3 = norm_layer(in_channels=1536, **norm_kwargs)
  
          self.conv4 = SeparableConv2d(
              1536,
              1536,
              3,
              stride=1,
              dilation=exit_block_dilations[1],
              norm_layer=norm_layer,
              norm_kwargs=norm_kwargs,
          )
          self.bn4 = norm_layer(in_channels=1536, **norm_kwargs)
  
          self.conv5 = SeparableConv2d(
              1536,
              2048,
              3,
              stride=1,
              dilation=exit_block_dilations[1],
              norm_layer=norm_layer,
              norm_kwargs=norm_kwargs,
          )
          self.bn5 = norm_layer(in_channels=2048, **norm_kwargs)
          self.avgpool = nn.GlobalAvgPool2D()
          self.flat = nn.Flatten()
          self.fc = nn.Dense(in_units=2048, units=classes)
  
imports: from mxnet.context import cpu
  import mxnet.gluon.nn
label_desc: Use image node_id 1 to create a new Xception71 object from inherited base classes: nn with example: obj = Xception71(classes, output_stride, norm_layer, norm_kwargs)