code: def forward(
      self,
      input,
      adj1_target=None,
      adj2_source=None,
      adj3_transfer=None,
  ):
      x, low_level_features = self.xception_features(input)
      # print(x.size())
      x1 = self.aspp1(x)
      x2 = self.aspp2(x)
      x3 = self.aspp3(x)
      x4 = self.aspp4(x)
      x5 = self.global_avg_pool(x)
      x5 = F.upsample(
          x5, size=x4.size()[2:], mode="bilinear", align_corners=True
      )
  
      x = torch.cat((x1, x2, x3, x4, x5), dim=1)
  
      x = self.concat_projection_conv1(x)
      x = self.concat_projection_bn1(x)
      x = self.relu(x)
      # print(x.size())
      x = F.upsample(
          x,
          size=low_level_features.size()[2:],
          mode="bilinear",
          align_corners=True,
      )
  
      low_level_features = self.feature_projection_conv1(
          low_level_features
      )
      low_level_features = self.feature_projection_bn1(
          low_level_features
      )
      low_level_features = self.relu(low_level_features)
      # print(low_level_features.size())
      # print(x.size())
      x = torch.cat((x, low_level_features), dim=1)
      x = self.decoder(x)
  
      ### add graph
      # source graph
      source_graph = self.source_featuremap_2_graph(x)
      source_graph1 = self.source_graph_conv1.forward(
          source_graph, adj=adj2_source, relu=True
      )
      source_graph2 = self.source_graph_conv2.forward(
          source_graph1, adj=adj2_source, relu=True
      )
      source_graph3 = self.source_graph_conv2.forward(
          source_graph2, adj=adj2_source, relu=True
      )
  
      source_2_target_graph1_v5 = self.transpose_graph.forward(
          source_graph1, adj=adj3_transfer, relu=True
      )
      source_2_target_graph2_v5 = self.transpose_graph.forward(
          source_graph2, adj=adj3_transfer, relu=True
      )
      source_2_target_graph3_v5 = self.transpose_graph.forward(
          source_graph3, adj=adj3_transfer, relu=True
      )
  
      # target graph
      # print('x size',x.size(),adj1.size())
      graph = self.target_featuremap_2_graph(x)
  
      source_2_target_graph1 = self.similarity_trans(
          source_graph1, graph
      )
      # graph combine 1
      # print(graph.size())
      # print(source_2_target_graph1.size())
      # print(source_2_target_graph1_v5.size())
      graph = torch.cat(
          (
              graph,
              source_2_target_graph1.squeeze(0),
              source_2_target_graph1_v5.squeeze(0),
          ),
          dim=-1,
      )
      graph = self.fc_graph.forward(graph, relu=True)
  
      graph = self.target_graph_conv1.forward(
          graph, adj=adj1_target, relu=True
      )
  
      source_2_target_graph2 = self.similarity_trans(
          source_graph2, graph
      )
      # graph combine 2
      graph = torch.cat(
          (graph, source_2_target_graph2, source_2_target_graph2_v5),
          dim=-1,
      )
      graph = self.fc_graph.forward(graph, relu=True)
  
      graph = self.target_graph_conv2.forward(
          graph, adj=adj1_target, relu=True
      )
  
      source_2_target_graph3 = self.similarity_trans(
          source_graph3, graph
      )
      # graph combine 3
      graph = torch.cat(
          (graph, source_2_target_graph3, source_2_target_graph3_v5),
          dim=-1,
      )
      graph = self.fc_graph.forward(graph, relu=True)
  
      graph = self.target_graph_conv3.forward(
          graph, adj=adj1_target, relu=True
      )
  
      # print(graph.size(),x.size())
  
      graph = self.target_graph_2_fea.forward(graph, x)
      x = self.target_skip_conv(x)
      x = x + graph
  
      ###
      x = self.semantic(x)
      x = F.upsample(
          x, size=input.size()[2:], mode="bilinear", align_corners=True
      )
  
      return x
  
imports: import torch
  import torch.nn
  from torch.nn import Parameter
  import torch.nn.functional
  from collections import OrderedDict
  from .None import deeplab_xception, gcn
  from torch.nn.parameter import Parameter
label_desc: Use image node_id 2 for calling the deeplab_xception_transfer_projection obj's underlying member method code with example usage: obj.forward(input, adj1_target, adj2_source, adj3_transfer) and returns: x