class_docstr: 2D FCN network with 3 input channels. The small decoder is built
  with the GCN and Refine modules.
  The code is adapted from `lsqshr's official 2D code <https://github.com/lsqshr/AH-Net/blob/master/net2d.py>`_.
  
  Args:
      out_channels: number of output channels. Defaults to 1.
      upsample_mode: [``"transpose"``, ``"bilinear"``]
          The mode of upsampling manipulations.
          Using the second mode cannot guarantee the model's reproducibility. Defaults to ``bilinear``.
  
          - ``transpose``, uses transposed convolution layers.
          - ``bilinear``, uses bilinear interpolation.
  
      pretrained: If True, returns a model pre-trained on ImageNet
      progress: If True, displays a progress bar of the download to stderr.
class_docstr_tok: ["2D","FCN","network","with","3","input","channels",".","The","small","decoder","is","built","with","the","GCN","and","Refine","modules",".","The","code","is","adapted","from","`","lsqshr","'s","official","2D","code","<","https",":","\/\/github.com\/lsqshr\/AH-Net\/blob\/master\/net2d.py",">","`","_",".","Args",":","out_channels",":","number","of","output","channels",".","Defaults","to","1.","upsample_mode",":","[","``","``","transpose","''","``",",","``","``","bilinear","''","``","]","The","mode","of","upsampling","manipulations",".","Using","the","second","mode","can","not","guarantee","the","model","'s","reproducibility",".","Defaults","to","``","bilinear","``",".","-","``","transpose","``",",","uses","transposed","convolution","layers",".","-","``","bilinear","``",",","uses","bilinear","interpolation",".","pretrained",":","If","True",",","returns","a","model","pre-trained","on","ImageNet","progress",":","If","True",",","displays","a","progress","bar","of","the","download","to","stderr","."]
docstr: Args:
      x: in shape (batch, 3, spatial_1, spatial_2).
docstr_tok: ["Args",":","x",":","in","shape","(","batch",",","3",",","spatial_1",",","spatial_2",")","."]
code: def forward(self, x: torch.Tensor):
      """
      Args:
          x: in shape (batch, 3, spatial_1, spatial_2).
      """
      org_input = x
      x = self.conv1(x)
      x = self.bn0(x)
      x = self.relu(x)
      conv_x = x
      x = self.maxpool(x)
      pool_x = x
  
      fm1 = self.layer1(x)
      fm2 = self.layer2(fm1)
      fm3 = self.layer3(fm2)
      fm4 = self.layer4(fm3)
  
      gcfm1 = self.refine1(self.gcn1(fm4))
      gcfm2 = self.refine2(self.gcn2(fm3))
      gcfm3 = self.refine3(self.gcn3(fm2))
      gcfm4 = self.refine4(self.gcn4(pool_x))
      gcfm5 = self.refine5(self.gcn5(conv_x))
  
      if self.upsample_mode == "transpose":
          fs1 = self.refine6(self.up_conv(gcfm1) + gcfm2)
          fs2 = self.refine7(self.up_conv(fs1) + gcfm3)
          fs3 = self.refine8(self.up_conv(fs2) + gcfm4)
          fs4 = self.refine9(self.up_conv(fs3) + gcfm5)
          return self.refine10(self.up_conv(fs4))
      fs1 = self.refine6(
          F.interpolate(
              gcfm1,
              fm3.size()[2:],
              mode=self.upsample_mode,
              align_corners=True,
          )
          + gcfm2
      )
      fs2 = self.refine7(
          F.interpolate(
              fs1,
              fm2.size()[2:],
              mode=self.upsample_mode,
              align_corners=True,
          )
          + gcfm3
      )
      fs3 = self.refine8(
          F.interpolate(
              fs2,
              pool_x.size()[2:],
              mode=self.upsample_mode,
              align_corners=True,
          )
          + gcfm4
      )
      fs4 = self.refine9(
          F.interpolate(
              fs3,
              conv_x.size()[2:],
              mode=self.upsample_mode,
              align_corners=True,
          )
          + gcfm5
      )
      return self.refine10(
          F.interpolate(
              fs4,
              org_input.size()[2:],
              mode=self.upsample_mode,
              align_corners=True,
          )
      )
  
imports: from __future__ import annotations
  import torch
  import torch.nn
  import torch.nn.functional
  from monai.networks.blocks.convolutions import Convolution
  from monai.networks.blocks.upsample import UpSample
  from monai.networks.layers.factories import Act, Conv, Norm
  from monai.utils import optional_import
label_desc: Use image node_id 2 for calling the FCN obj's underlying member method code with example usage: obj.forward(x) and returns: self, self