code: def __init__(self, in_channel, out_channel, stride, expand_ratio):
      super(InvertedResidual, self).__init__()
      hidden_channel = in_channel * expand_ratio
      self.use_shortcut = stride == 1 and in_channel == out_channel
  
      layers = []
      if expand_ratio != 1:
          # 1x1 pointwise conv
          layers.append(
              ConvBNReLU(in_channel, hidden_channel, kernel_size=1)
          )
      layers.extend(
          [
              # 3x3 depthwise conv
              ConvBNReLU(
                  hidden_channel,
                  hidden_channel,
                  stride=stride,
                  groups=hidden_channel,
              ),
              # 1x1 pointwise conv(linear)
              nn.Conv2d(
                  hidden_channel, out_channel, kernel_size=1, bias=False
              ),
              nn.BatchNorm2d(out_channel),
          ]
      )
  
      self.conv = nn.Sequential(*layers)
  
file_path: deep-learning-for-image-processing/pytorch_classification/ConfusionMatrix/model.py
imports: from torch import nn
  import torch
label_desc: Use image node_id 1 to create a new InvertedResidual object from inherited base classes: nn with example: obj = InvertedResidual(in_channel, out_channel, stride, expand_ratio)