class_docstr: This class defines the Basic block in the `ResNet model <https://arxiv.org/abs/1512.03385>`_
  Args:
      opts: command-line arguments
      in_channels (int): :math:`C_{in}` from an expected input of size :math:`(N, C_{in}, H_{in}, W_{in})`
      mid_channels (int): :math:`C_{mid}` from an expected tensor of size :math:`(N, C_{mid}, H_{out}, W_{out})`
      out_channels (int): :math:`C_{out}` from an expected output of size :math:`(N, C_{out}, H_{out}, W_{out})`
      stride (Optional[int]): Stride for convolution. Default: 1
      dilation (Optional[int]): Dilation for convolution. Default: 1
      dropout (Optional[float]): Dropout after second convolution. Default: 0.0
      stochastic_depth_prob (Optional[float]): Stochastic depth drop probability (1 - survival_prob). Default: 0.0
      squeeze_channels (Optional[int]): The number of channels to use in the Squeeze-Excitation block for SE-ResNet.
          Default: None.
  
  Shape:
      - Input: :math:`(N, C_{in}, H_{in}, W_{in})`
      - Output: :math:`(N, C_{out}, H_{out}, W_{out})`
code: def __repr__(self) -> str:
      return "{}(in_channels={}, out_channels={}, stride={}, dilation={}, dropout={}, stochastic_depth_prob={}, squeeze_channels={})".format(
          self.__class__.__name__,
          self.in_channels,
          self.out_channels,
          self.stride,
          self.dilation,
          self.dropout,
          self.stochastic_depth_prob,
          self.squeeze_channels,
      )
  
file_path: ml-cvnets/cvnets/modules/resnet_modules.py
imports: import argparse
  from typing import Optional
  from torch import Tensor, nn
  from cvnets.layers import ConvLayer2d, Dropout, Identity, StochasticDepth
  from cvnets.layers.activation import build_activation_layer
  from cvnets.modules import BaseModule, SqueezeExcitation
label_desc: Use image node_id 3 for calling the BasicResNetBlock obj's underlying member method code with example usage: obj.__repr__() and returns: str