code: def forward(self, encoder_outputs, image, mask=None):
      output = encoder_outputs[0]
      for block, skip_output in zip(
          self.deconv_blocks[:-1], encoder_outputs[1:]
      ):
          output = block(output, mask)
          output = output + skip_output
      output = self.deconv_blocks[-1](output, mask)
  
      if self.image_fusion:
          attention_map = torch.sigmoid(
              3.0 * self.conv_attention(output)
          )
          output = attention_map * image + (
              1.0 - attention_map
          ) * self.to_rgb(output)
      else:
          output = self.to_rgb(output)
  
      return output
  
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 2 for calling the DeconvDecoder obj's underlying member method code with example usage: obj.forward(encoder_outputs, image, mask) and returns: output