class_docstr: Simple pre-activated ResNet-style block.
  
  Structure: input -> ReLU -> Conv2d -> ReLU -> Conv2d + input
  
  Args:
      in_channels: Number of input channels.
      out_channels: Number of output channels.
      stride: Stride of convolutions.
class_docstr_tok: ["Simple","pre-activated","ResNet-style","block",".","Structure",":","input","-",">","ReLU","-",">","Conv2d","-",">","ReLU","-",">","Conv2d","+","input","Args",":","in_channels",":","Number","of","input","channels",".","out_channels",":","Number","of","output","channels",".","stride",":","Stride","of","convolutions","."]
code: def __init__(
      self,
      kernel_size: int = 3,
      in_channels: int = 64,
      out_channels: int = 64,
      stride: int = 1,
  ):
      super().__init__()
      padding = kernel_size // 2
  
      self.block = nn.Sequential(
          nn.ReLU(),
          nn.Conv2d(
              in_channels=in_channels,
              out_channels=in_channels,
              kernel_size=kernel_size,
              stride=stride,
              padding=padding,
              bias=True,
          ),
          nn.ReLU(),
          nn.Conv2d(
              in_channels=in_channels,
              out_channels=out_channels,
              kernel_size=kernel_size,
              stride=stride,
              padding=padding,
              bias=True,
          ),
      )
  
imports: from typing import Any, List, NamedTuple, Optional, Sequence, Tuple
  import torch
  import torch.nn.functional
  from compressai.entropy_models import EntropyBottleneck
  from torch import Tensor, nn
  import neuralcompression.functional
  from neuralcompression.layers import SimplifiedGDN, SimplifiedInverseGDN
label_desc: Use image node_id 1 to create a new _ResidualBlock object from inherited base classes: nn with example: obj = _ResidualBlock(kernel_size, in_channels, out_channels, stride)