class_docstr: Autoencoder Decoder model.
  
  Args:
      out_channels (int): number of convolution output channels
      img_size (tuple): size of input images
code: def forward(self, x):
      x = F.interpolate(
          x,
          size=(
              int(self.img_size[0] / 64) - 1,
              int(self.img_size[1] / 64) - 1,
          ),
          mode="bilinear",
      )
      x = F.relu(self.deconv1(x))
      x = self.dropout1(x)
      x = F.interpolate(
          x,
          size=(int(self.img_size[0] / 32), int(self.img_size[1] / 32)),
          mode="bilinear",
      )
      x = F.relu(self.deconv2(x))
      x = self.dropout2(x)
      x = F.interpolate(
          x,
          size=(
              int(self.img_size[0] / 16) - 1,
              int(self.img_size[1] / 16) - 1,
          ),
          mode="bilinear",
      )
      x = F.relu(self.deconv3(x))
      x = self.dropout3(x)
      x = F.interpolate(
          x,
          size=(int(self.img_size[0] / 8), int(self.img_size[1] / 8)),
          mode="bilinear",
      )
      x = F.relu(self.deconv4(x))
      x = self.dropout4(x)
      x = F.interpolate(
          x,
          size=(
              int(self.img_size[0] / 4) - 1,
              int(self.img_size[1] / 4) - 1,
          ),
          mode="bilinear",
      )
      x = F.relu(self.deconv5(x))
      x = self.dropout5(x)
      x = F.interpolate(
          x,
          size=(
              int(self.img_size[0] / 2) - 1,
              int(self.img_size[1] / 2) - 1,
          ),
          mode="bilinear",
      )
      x = F.relu(self.deconv6(x))
      x = self.dropout6(x)
      x = F.interpolate(x, size=self.last_upsample, mode="bilinear")
      x = F.relu(self.deconv7(x))
      x = self.deconv8(x)
      return x
  
imports: from __future__ import annotations
  import logging
  import random
  from enum import Enum
  import torch
  import torch.nn.functional
  from torch import Tensor, nn
  from torchvision import transforms
label_desc: Use image node_id 2 for calling the Decoder obj's underlying member method code with example usage: obj.forward(x) and returns: x