code: def __init__(
      self,
      input_channels,
      output_channels,
      activation: Callable = nn.ReLU,
  ):
      super().__init__()
  
      self.conv1 = nn.Conv2d(
          input_channels,
          16,
          kernel_size=3,
          padding=1,
          stride=2,
          bias=False,
      )
      self.bn1 = nn.BatchNorm2d(16)
      self.act1 = activation(inplace=True)
  
      self.conv2 = nn.Conv2d(
          16, 32, kernel_size=3, padding=1, stride=1, bias=False
      )
      self.bn2 = nn.BatchNorm2d(32)
      self.act2 = activation(inplace=True)
  
      self.conv3 = nn.Conv2d(
          32, 64, kernel_size=3, padding=1, stride=2, bias=False
      )
      self.bn3 = nn.BatchNorm2d(64)
      self.act3 = activation(inplace=True)
  
      self.residual1 = HGResidualBlock(64, 128)
      self.residual2 = HGResidualBlock(128, output_channels)
  
imports: import inspect
  from collections import OrderedDict
  from typing import List, Callable, Tuple
  import torch
  from pytorch_toolbelt.modules import ACT_RELU, get_activation_block
  from pytorch_toolbelt.modules.encoders import EncoderModule, make_n_channel_input
  from torch import nn, Tensor
label_desc: Use image node_id 1 to create a new HGStemBlock object from inherited base classes: nn with example: obj = HGStemBlock(input_channels, output_channels, activation)