def METHOD_NAME(self, blocks, in_channels, channels):
    result = []
    for i in range(blocks):
        stride = 2 if i == 0 else 1
        inp = in_channels if i == 0 else channels
        oup = channels
        base_mid_channels = channels // 2
        mid_channels = int(base_mid_channels)  # prepare for scale
        self._layerchoice_count += 1
        choice_block = LayerChoice([
            ShuffleNetBlock(inp, oup, mid_channels=mid_channels, ksize=3, stride=stride, affine=self._affine),
            ShuffleNetBlock(inp, oup, mid_channels=mid_channels, ksize=5, stride=stride, affine=self._affine),
            ShuffleNetBlock(inp, oup, mid_channels=mid_channels, ksize=7, stride=stride, affine=self._affine),
            ShuffleXceptionBlock(inp, oup, mid_channels=mid_channels, stride=stride, affine=self._affine)
        ], label="LayerChoice" + str(self._layerchoice_count))
        result.append(choice_block)
        if stride == 2:
            self._feature_map_size //= 2
    return result