code: def __init__(
      self, in_channels, out_channels, stride, sk_ratio, min_dim=32
  ):
      super().__init__()
      assert sk_ratio > 0.0
      self.main_conv = nn.Sequential(
          conv(in_channels, 2 * out_channels, stride=stride),
          BatchNormRelu(2 * out_channels),
      )
      mid_dim = max(int(out_channels * sk_ratio), min_dim)
      self.mixing_conv = nn.Sequential(
          conv(out_channels, mid_dim, kernel_size=1),
          BatchNormRelu(mid_dim),
          conv(mid_dim, 2 * out_channels, kernel_size=1),
      )
  
imports: import logging
  from enum import Enum
  import torch
  import torch.nn
  import torch.nn.functional
  from vissl.config import AttrDict
  from vissl.models.trunks import register_model_trunk
label_desc: Use image node_id 1 to create a new SelectiveKernel object from inherited base classes: nn with example: obj = SelectiveKernel(in_channels, out_channels, stride, sk_ratio, min_dim)