class_docstr: Build Trunk Blocks
      
code: def __init__(
      self,
      choices,
      channel_multiplier=1.0,
      channel_divisor=8,
      channel_min=None,
      output_stride=32,
      pad_type="",
      act_layer=None,
      se_kwargs=None,
      norm_layer=nn.BatchNorm2d,
      norm_kwargs=None,
      drop_path_rate=0.0,
      feature_location="",
      verbose=False,
      resunit=False,
      dil_conv=False,
      logger=None,
  ):
      # dict
      # choices = {'kernel_size': [3, 5, 7], 'exp_ratio': [4, 6]}
      self.choices = [
          [x, y]
          for x in choices["kernel_size"]
          for y in choices["exp_ratio"]
      ]
      self.choices_num = len(self.choices) - 1
      self.channel_multiplier = channel_multiplier
      self.channel_divisor = channel_divisor
      self.channel_min = channel_min
      self.output_stride = output_stride
      self.pad_type = pad_type
      self.act_layer = act_layer
      self.se_kwargs = se_kwargs
      self.norm_layer = norm_layer
      self.norm_kwargs = norm_kwargs
      self.drop_path_rate = drop_path_rate
      self.feature_location = feature_location
      assert feature_location in ("pre_pwl", "post_exp", "")
      self.verbose = verbose
      self.resunit = resunit
      self.dil_conv = dil_conv
      self.logger = logger
  
      # state updated during build, consumed by model
      self.in_chs = None
  
file_path: nni/examples/nas/legacy/cream/lib/models/builders/build_supernet.py
imports: from copy import deepcopy
  from lib.utils.builder_util import modify_block_args
  from lib.models.blocks import get_Bottleneck, InvertedResidual
  from timm.models.efficientnet_blocks import *
  from nni.nas.pytorch import mutables
label_desc: Use image node_id 1 to create a new SuperNetBuilder object  with example: obj = SuperNetBuilder(choices, channel_multiplier, channel_divisor, channel_min, output_stride, pad_type, act_layer, se_kwargs, norm_layer, norm_kwargs, drop_path_rate, feature_location, verbose, resunit, dil_conv, logger)