class_docstr: UNet, down sampling & up sampling for global reasoning
class_docstr_tok: ["UNet",",","down","sampling","&","up","sampling","for","global","reasoning"]
docstr: Given multi-channel attention map, return the logits of every one mapping into 3-class
  :param attention_channels:
  :return:
docstr_tok: ["Given","multi-channel","attention","map",",","return","the","logits","of","every","one","mapping","into","3-class",":","param","attention_channels",":",":","return",":"]
code: def forward(self, attention_channels):
      """
      Given multi-channel attention map, return the logits of every one mapping into 3-class
      :param attention_channels:
      :return:
      """
      # attention_channels as the shape of: batch_size x channel x width x height
      x = attention_channels
      x1 = self.inc(x)
      x2 = self.down1(x1)
      x3 = self.down2(x2)
      x = self.up1(x3, x2)
      x = self.up2(x, x1)
      output = self.outc(x)
      # attn_map as the shape of: batch_size x width x height x class
      output = output.permute(0, 2, 3, 1).contiguous()
      return output
  
imports: import torch.nn
  import torch.nn.functional
  import torch
label_desc: Use image node_id 2 for calling the AttentionUNet obj's underlying member method code with example usage: obj.forward(attention_channels) and returns: output