class_docstr: A projection upsampling module that can be used for UNETR: "Hatamizadeh et al.,
  UNETR: Transformers for 3D Medical Image Segmentation <https://arxiv.org/abs/2103.10504>"
class_docstr_tok: ["A","projection","upsampling","module","that","can","be","used","for","UNETR",":","``","Hatamizadeh","et","al.",",","UNETR",":","Transformers","for","3D","Medical","Image","Segmentation","<","https",":","\/\/arxiv.org\/abs\/2103.10504",">","''"]
docstr: Args:
      spatial_dims: number of spatial dimensions.
      in_channels: number of input channels.
      out_channels: number of output channels.
      num_layer: number of upsampling blocks.
      kernel_size: convolution kernel size.
      stride: convolution stride.
      upsample_kernel_size: convolution kernel size for transposed convolution layers.
      norm_name: feature normalization type and arguments.
      conv_block: bool argument to determine if convolutional block is used.
      res_block: bool argument to determine if residual block is used.
docstr_tok: ["Args",":","spatial_dims",":","number","of","spatial","dimensions",".","in_channels",":","number","of","input","channels",".","out_channels",":","number","of","output","channels",".","num_layer",":","number","of","upsampling","blocks",".","kernel_size",":","convolution","kernel","size",".","stride",":","convolution","stride",".","upsample_kernel_size",":","convolution","kernel","size","for","transposed","convolution","layers",".","norm_name",":","feature","normalization","type","and","arguments",".","conv_block",":","bool","argument","to","determine","if","convolutional","block","is","used",".","res_block",":","bool","argument","to","determine","if","residual","block","is","used","."]
code: def __init__(
      self,
      spatial_dims: int,
      in_channels: int,
      out_channels: int,
      num_layer: int,
      kernel_size: Sequence[int] | int,
      stride: Sequence[int] | int,
      upsample_kernel_size: Sequence[int] | int,
      norm_name: tuple | str,
      conv_block: bool = False,
      res_block: bool = False,
  ) -> None:
      """
      Args:
          spatial_dims: number of spatial dimensions.
          in_channels: number of input channels.
          out_channels: number of output channels.
          num_layer: number of upsampling blocks.
          kernel_size: convolution kernel size.
          stride: convolution stride.
          upsample_kernel_size: convolution kernel size for transposed convolution layers.
          norm_name: feature normalization type and arguments.
          conv_block: bool argument to determine if convolutional block is used.
          res_block: bool argument to determine if residual block is used.
  
      """
  
      super().__init__()
  
      upsample_stride = upsample_kernel_size
      self.transp_conv_init = get_conv_layer(
          spatial_dims,
          in_channels,
          out_channels,
          kernel_size=upsample_kernel_size,
          stride=upsample_stride,
          conv_only=True,
          is_transposed=True,
      )
      if conv_block:
          if res_block:
              self.blocks = nn.ModuleList(
                  [
                      nn.Sequential(
                          get_conv_layer(
                              spatial_dims,
                              out_channels,
                              out_channels,
                              kernel_size=upsample_kernel_size,
                              stride=upsample_stride,
                              conv_only=True,
                              is_transposed=True,
                          ),
                          UnetResBlock(
                              spatial_dims=spatial_dims,
                              in_channels=out_channels,
                              out_channels=out_channels,
                              kernel_size=kernel_size,
                              stride=stride,
                              norm_name=norm_name,
                          ),
                      )
                      for i in range(num_layer)
                  ]
              )
          else:
              self.blocks = nn.ModuleList(
                  [
                      nn.Sequential(
                          get_conv_layer(
                              spatial_dims,
                              out_channels,
                              out_channels,
                              kernel_size=upsample_kernel_size,
                              stride=upsample_stride,
                              conv_only=True,
                              is_transposed=True,
                          ),
                          UnetBasicBlock(
                              spatial_dims=spatial_dims,
                              in_channels=out_channels,
                              out_channels=out_channels,
                              kernel_size=kernel_size,
                              stride=stride,
                              norm_name=norm_name,
                          ),
                      )
                      for i in range(num_layer)
                  ]
              )
      else:
          self.blocks = nn.ModuleList(
              [
                  get_conv_layer(
                      spatial_dims,
                      out_channels,
                      out_channels,
                      kernel_size=upsample_kernel_size,
                      stride=upsample_stride,
                      conv_only=True,
                      is_transposed=True,
                  )
                  for i in range(num_layer)
              ]
          )
  
file_path: MONAI/monai/networks/blocks/unetr_block.py
imports: from __future__ import annotations
  from collections.abc import Sequence
  import torch
  import torch.nn
  from monai.networks.blocks.dynunet_block import UnetBasicBlock, UnetResBlock, get_conv_layer
label_desc: Use image node_id 1 to create a new UnetrPrUpBlock object from inherited base classes: nn with example: obj = UnetrPrUpBlock(spatial_dims, in_channels, out_channels, num_layer, kernel_size, stride, upsample_kernel_size, norm_name, conv_block, res_block)