class_docstr: Inverted residual block w/ CondConv routing
class_docstr_tok: ["Inverted","residual","block","w\/","CondConv","routing"]
code: def __init__(
      self,
      in_chs,
      out_chs,
      dw_kernel_size=3,
      stride=1,
      pad_type="",
      act_layer=nn.ReLU,
      noskip=False,
      exp_ratio=1.0,
      exp_kernel_size=1,
      pw_kernel_size=1,
      se_ratio=0.0,
      se_kwargs=None,
      norm_layer=nn.BatchNorm2d,
      norm_kwargs=None,
      num_experts=0,
      drop_connect_rate=0.0,
  ):
      self.num_experts = num_experts
      conv_kwargs = dict(num_experts=self.num_experts)
  
      super(CondConvResidual, self).__init__(
          in_chs,
          out_chs,
          dw_kernel_size=dw_kernel_size,
          stride=stride,
          pad_type=pad_type,
          act_layer=act_layer,
          noskip=noskip,
          exp_ratio=exp_ratio,
          exp_kernel_size=exp_kernel_size,
          pw_kernel_size=pw_kernel_size,
          se_ratio=se_ratio,
          se_kwargs=se_kwargs,
          norm_layer=norm_layer,
          norm_kwargs=norm_kwargs,
          conv_kwargs=conv_kwargs,
          drop_connect_rate=drop_connect_rate,
      )
  
      self.routing_fn = nn.Linear(in_chs, self.num_experts)
  
imports: import re
  from copy import deepcopy
  from .conv2d_layers import *
  from geffnet.activations import *
label_desc: Use image node_id 1 to create a new CondConvResidual object from inherited base classes: InvertedResidual with example: obj = CondConvResidual(in_chs, out_chs, dw_kernel_size, stride, pad_type, act_layer, noskip, exp_ratio, exp_kernel_size, pw_kernel_size, se_ratio, se_kwargs, norm_layer, norm_kwargs, num_experts, drop_connect_rate)