class_docstr: The ``choice_x`` version of shuffle net block, described in
  `Single Path One-shot <https://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123610528.pdf>`__.
code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      mid_channels: Union[int, MutableExpression[int]],
      *,
      stride: int,
      affine: bool = True,
  ):
      super().__init__(
          in_channels,
          out_channels,
          mid_channels,
          kernel_size=3,
          stride=stride,
          sequence="dpdpdp",
          affine=affine,
      )
  
imports: from typing import Union, cast
  import torch
  import torch.nn
  import nni
  from nni.mutable import MutableExpression
  from nni.nas.nn.pytorch import LayerChoice, ModelSpace, MutableConv2d, MutableBatchNorm2d
  from .utils.pretrained import load_pretrained_weight
label_desc: Use image node_id 1 to create a new ShuffleXceptionBlock object from inherited base classes: ShuffleNetBlock with example: obj = ShuffleXceptionBlock(in_channels, out_channels, mid_channels)