class_docstr: Atrous spatial pyramid pooling used in object detection and segmentation.
  
  Args:
      in_channels (`int`):
          Number of input channels.
      depth (`int`):
          Hidden dimension.
code: def __init__(self, in_channel=512, depth=256):
      super().__init__()
      # global average pooling : init nn.AdaptiveAvgPool2d ;also forward torch.mean(,,keep_dim=True)
      self.mean = nn.AdaptiveAvgPool2d((1, 1))
      self.conv = nn.Conv2d(in_channel, depth, 1, 1)
      # k=1 s=1 no pad
      self.atrous_block1 = nn.Conv2d(in_channel, depth, 1, 1)
      self.atrous_block6 = nn.Conv2d(
          in_channel, depth, 3, 1, padding=6, dilation=6
      )
      self.atrous_block12 = nn.Conv2d(
          in_channel, depth, 3, 1, padding=12, dilation=12
      )
      self.atrous_block18 = nn.Conv2d(
          in_channel, depth, 3, 1, padding=18, dilation=18
      )
  
      self.conv_1x1_output = nn.Conv2d(depth * 5, depth, 1, 1)
  
imports: import torch
  import torch.nn.functional
  from torch import nn
label_desc: Use image node_id 1 to create a new ASPP object from inherited base classes: nn with example: obj = ASPP(in_channel, depth)