class_docstr: FeatureFusionBlock, merge feature map from different stages.
  Args:
      in_channels (int): Input channels.
      act_layer (nn.Module): activation layer for ResidualConvUnit.
      norm_layer (nn.Module): normalization layer.
      expand (bool): Whether expand the channels in post process block.
          Default: False.
      align_corners (bool): align_corner setting for bilinear upsample.
          Default: True.
code: def __init__(
      self,
      in_channels,
      act_layer,
      norm_layer,
      expand=False,
      align_corners=True,
  ):
      super(FeatureFusionBlock, self).__init__()
  
      self.in_channels = in_channels
      self.expand = expand
      self.align_corners = align_corners
  
      self.out_channels = in_channels
      if self.expand:
          self.out_channels = in_channels // 2
  
      self.project = ConvModule(
          self.in_channels,
          self.out_channels,
          kernel_size=1,
          act_layer=None,
          bias=True,
      )
  
      self.res_conv_unit1 = PreActResidualConvUnit(
          in_channels=self.in_channels,
          act_layer=act_layer,
          norm_layer=norm_layer,
      )
      self.res_conv_unit2 = PreActResidualConvUnit(
          in_channels=self.in_channels,
          act_layer=act_layer,
          norm_layer=norm_layer,
      )
  
imports: import copy
  from functools import partial
  import math
  import warnings
  import torch
  import torch.nn
  from .ops import resize
label_desc: Use image node_id 1 to create a new FeatureFusionBlock object from inherited base classes: nn with example: obj = FeatureFusionBlock(in_channels, act_layer, norm_layer, expand, align_corners)