class_docstr: Deep Video Compression decoder module.
  
  Args:
      in_channels: Number of channels in latent space.
      out_channels: Number of channels to output from decoder.
      filter_channels: Number of channels for intermediate layers.
      kernel_size: Size of convolution kernels.
      stride: Stride of convolutions.
      num_conv_layers: Number of convolution layers.
      use_gdn: Whether to use Generalized Divisive Normalization or
          BatchNorm.
class_docstr_tok: ["Deep","Video","Compression","decoder","module",".","Args",":","in_channels",":","Number","of","channels","in","latent","space",".","out_channels",":","Number","of","channels","to","output","from","decoder",".","filter_channels",":","Number","of","channels","for","intermediate","layers",".","kernel_size",":","Size","of","convolution","kernels",".","stride",":","Stride","of","convolutions",".","num_conv_layers",":","Number","of","convolution","layers",".","use_gdn",":","Whether","to","use","Generalized","Divisive","Normalization","or","BatchNorm","."]
code: def forward(
      self,
      image: Tensor,
      output_sizes: Optional[Sequence[torch.Size]] = None,
  ) -> Tensor:
      # validate output_sizes
      if output_sizes is not None:
          output_sizes = [os for os in output_sizes]  # shallow copy
          transpose_conv_count = 0
          for layer in self.layers:
              if isinstance(layer, nn.ConvTranspose2d):
                  transpose_conv_count += 1
          if not transpose_conv_count == len(output_sizes):
              raise ValueError(
                  "len(output_sizes) must match number of transpose convolutions."
              )
  
      # run the deconvolutions
      for layer in self.layers:
          # use sizes from encoder if we have them for decoding
          if (
              isinstance(layer, nn.ConvTranspose2d)
              and output_sizes is not None
          ):
              image = layer(image, output_sizes.pop())
          else:
              image = layer(image)
  
      return image
  
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 2 for calling the DVCCompressionDecoder obj's underlying member method code with example usage: obj.forward(image, output_sizes) and returns: image