code: def forward(self, x, backbone_features):
      backbone_features = (
          [] if backbone_features is None else backbone_features[::-1]
      )
  
      outputs = [self.block0(x)]
      outputs += [self.block1(outputs[-1])]
  
      for block_i in range(2, self.depth):
          block = self.blocks_connected[f"block{block_i}"]
          output = outputs[-1]
          connector_name = f"connector{block_i}"
          if connector_name in self.connectors:
              stage_features = backbone_features.pop()
              connector = self.connectors[connector_name]
              output = connector(output, stage_features)
          outputs += [block(output)]
  
      return outputs[::-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 2 for calling the ConvEncoder obj's underlying member method code with example usage: obj.forward(x, backbone_features) and returns: outputs