code: def __init__(
      self,
      nin: int,
      nout: int,
      stride: int = 1,
      activate_before_residual: bool = False,
      bn: Callable = objax.nn.BatchNorm2D,
  ):
      self.activate_before_residual = activate_before_residual
      self.bn = bn(nin, momentum=0.999)
      self.residual = objax.nn.Sequential(
          [
              objax.nn.Conv2D(
                  nin, nout, 3, strides=stride, **conv_args(3, nout)
              ),
              bn(nout, momentum=0.999),
              leaky_relu,
              objax.nn.Conv2D(nout, nout, 3, **conv_args(3, nout)),
          ]
      )
      self.passthrough = (
          objax.nn.Conv2D(
              nin, nout, 1, strides=stride, **conv_args(1, nout)
          )
          if nin != nout
          else None
      )
  
file_path: objax/examples/fixmatch/libml/zoo/resnet.py
imports: import functools
  from typing import Callable
  import jax
  import objax
  from objax.typing import JaxArray
label_desc: Use image node_id 1 to create a new ResNetBlock object from inherited base classes: objax with example: obj = ResNetBlock(nin, nout, stride, activate_before_residual, bn)