class_docstr: Vanilla block: [3x3 conv, BN, Relu] x2.
class_docstr_tok: ["Vanilla","block",":","[","3x3","conv",",","BN",",","Relu","]","x2","."]
code: def __init__(
      self,
      width_in: int,
      width_out: int,
      stride: int,
      bn_epsilon: float,
      bn_momentum: float,
      activation: nn.Module,
      *args,
      **kwargs,
  ):
      super().__init__()
      self.a = nn.Sequential(
          nn.Conv2d(
              width_in,
              width_out,
              3,
              stride=stride,
              padding=1,
              bias=False,
          ),
          nn.BatchNorm2d(
              width_out, eps=bn_epsilon, momentum=bn_momentum
          ),
          activation,
      )
  
      self.b = nn.Sequential(
          nn.Conv2d(
              width_out, width_out, 3, stride=1, padding=1, bias=False
          ),
          nn.BatchNorm2d(
              width_out, eps=bn_epsilon, momentum=bn_momentum
          ),
          activation,
      )
  
      self.depth = 2
  
imports: import math
  from collections import OrderedDict
  from enum import auto, Enum
  from typing import Any, Dict, Optional, Sequence
  import torch.nn
  from classy_vision.generic.util import get_torch_version
  from classy_vision.models import ClassyModel, register_model
  from classy_vision.models.squeeze_and_excitation_layer import SqueezeAndExcitationLayer
label_desc: Use image node_id 1 to create a new VanillaBlock object from inherited base classes: nn with example: obj = VanillaBlock(width_in, width_out, stride, bn_epsilon, bn_momentum, activation)