class_docstr: ResNet model for decoder.
  
  Args:
      block (Type[DecoderBasicBlock | DecoderBottleneck]): Type of block to use in a layer.
      layers (list[int]): List to specify number for blocks per layer.
      zero_init_residual (bool, optional): If true, initializes the last batch norm in each layer to zero.
          Defaults to False.
      groups (int, optional): Number of blocked connections per layer from input channels to output channels.
          Defaults to 1.
      width_per_group (int, optional): Number of layers in each intermediate convolution layer.. Defaults to 64.
      norm_layer (Callable[..., nn.Module] | None, optional): Batch norm layer to use. Defaults to None.
class_docstr_tok: ["ResNet","model","for","decoder",".","Args",":","block","(","Type","[","DecoderBasicBlock","|","DecoderBottleneck","]",")",":","Type","of","block","to","use","in","a","layer",".","layers","(","list","[","int","]",")",":","List","to","specify","number","for","blocks","per","layer",".","zero_init_residual","(","bool",",","optional",")",":","If","true",",","initializes","the","last","batch","norm","in","each","layer","to","zero",".","Defaults","to","False",".","groups","(","int",",","optional",")",":","Number","of","blocked","connections","per","layer","from","input","channels","to","output","channels",".","Defaults","to","1.","width_per_group","(","int",",","optional",")",":","Number","of","layers","in","each","intermediate","convolution","layer","..","Defaults","to","64.","norm_layer","(","Callable","[","...",",","nn.Module","]","|","None",",","optional",")",":","Batch","norm","layer","to","use",".","Defaults","to","None","."]
code: def _make_layer(
      self,
      block: type[DecoderBasicBlock | DecoderBottleneck],
      planes: int,
      blocks: int,
      stride: int = 1,
  ) -> nn.Sequential:
      norm_layer = self._norm_layer
      upsample = None
      previous_dilation = self.dilation
      if stride != 1 or self.inplanes != planes * block.expansion:
          upsample = nn.Sequential(
              nn.ConvTranspose2d(
                  self.inplanes,
                  planes * block.expansion,
                  kernel_size=2,
                  stride=stride,
                  groups=self.groups,
                  bias=False,
                  dilation=self.dilation,
              ),
              norm_layer(planes * block.expansion),
          )
  
      layers = []
      layers.append(
          block(
              self.inplanes,
              planes,
              stride,
              upsample,
              self.groups,
              self.base_width,
              previous_dilation,
              norm_layer,
          )
      )
      self.inplanes = planes * block.expansion
      for _ in range(1, blocks):
          layers.append(
              block(
                  self.inplanes,
                  planes,
                  groups=self.groups,
                  base_width=self.base_width,
                  dilation=self.dilation,
                  norm_layer=norm_layer,
              )
          )
  
      return nn.Sequential(*layers)
  
imports: from __future__ import annotations
  from typing import Any, Callable
  from torch import Tensor, nn
  from torchvision.models.resnet import conv1x1, conv3x3
label_desc: Use image node_id 2 for calling the ResNet obj's underlying member method code with example usage: obj._make_layer(block, planes, blocks, stride) and returns: nn