code: def __init__(
      self,
      depth,
      encoder_blocks_channels,
      norm_layer,
      attend_from=-1,
      image_fusion=False,
  ):
      super(DeconvDecoder, self).__init__()
      self.image_fusion = image_fusion
      self.deconv_blocks = nn.ModuleList()
  
      in_channels = encoder_blocks_channels.pop()
      out_channels = in_channels
      for d in range(depth):
          out_channels = (
              encoder_blocks_channels.pop()
              if len(encoder_blocks_channels)
              else in_channels // 2
          )
          self.deconv_blocks.append(
              SEDeconvBlock(
                  in_channels,
                  out_channels,
                  norm_layer=norm_layer,
                  padding=0 if d == 0 else 1,
                  with_se=0 <= attend_from <= d,
              )
          )
          in_channels = out_channels
  
      if self.image_fusion:
          self.conv_attention = nn.Conv2d(
              out_channels, 1, kernel_size=1
          )
      self.to_rgb = nn.Conv2d(out_channels, 3, kernel_size=1)
  
file_path: carefree-learn/cflearn/api/cv/third_party/iharm/model/modeling/conv_autoencoder.py
imports: import torch
  import torch.nn
  from .basic_blocks import ConvBlock
  from ..ops import FeaturesConnector
  from ..ops import MaskedChannelAttention
label_desc: Use image node_id 1 to create a new DeconvDecoder object from inherited base classes: nn with example: obj = DeconvDecoder(depth, encoder_blocks_channels, norm_layer, attend_from, image_fusion)