class_docstr: ASPP module defined in DeepLab papers, `here <https://arxiv.org/abs/1606.00915>`_ and `here <https://arxiv.org/abs/1706.05587>`_
  
  Args:
      opts: command-line arguments
      in_channels (int): :math:`C_{in}` from an expected input of size :math:`(N, C_{in}, H, W)`
      out_channels (int): :math:`C_{out}` from an expected output of size :math:`(N, C_{out}, H, W)`
      atrous_rates (Tuple[int]): atrous rates for different branches.
      is_sep_conv (Optional[bool]): Use separable convolution instead of standaard conv. Default: False
      dropout (Optional[float]): Apply dropout. Default is 0.0
  
  Shape:
      - Input: :math:`(N, C_{in}, H, W)`
      - Output: :math:`(N, C_{out}, H, W)`
class_docstr_tok: ["ASPP","module","defined","in","DeepLab","papers",",","`","here","<","https",":","\/\/arxiv.org\/abs\/1606.00915",">","`","_","and","`","here","<","https",":","\/\/arxiv.org\/abs\/1706.05587",">","`","_","Args",":","opts",":","command-line","arguments","in_channels","(","int",")",":",":","math",":","`","C_","{","in","}","`","from","an","expected","input","of","size",":","math",":","`","(","N",",","C_","{","in","}",",","H",",","W",")","`","out_channels","(","int",")",":",":","math",":","`","C_","{","out","}","`","from","an","expected","output","of","size",":","math",":","`","(","N",",","C_","{","out","}",",","H",",","W",")","`","atrous_rates","(","Tuple","[","int","]",")",":","atrous","rates","for","different","branches",".","is_sep_conv","(","Optional","[","bool","]",")",":","Use","separable","convolution","instead","of","standaard","conv",".","Default",":","False","dropout","(","Optional","[","float","]",")",":","Apply","dropout",".","Default","is","0.0","Shape",":","-","Input",":",":","math",":","`","(","N",",","C_","{","in","}",",","H",",","W",")","`","-","Output",":",":","math",":","`","(","N",",","C_","{","out","}",",","H",",","W",")","`"]
code: def forward(self, x: Tensor, *args, **kwargs) -> Tensor:
      out = []
      for conv in self.convs:
          out.append(conv(x))
      out = torch.cat(out, dim=1)
      out = self.project(out)
      out = self.dropout_layer(out)
      return out
  
imports: import argparse
  from typing import Optional, Tuple
  import torch
  import torch.nn.functional
  from torch import Tensor, nn
  from cvnets.layers import AdaptiveAvgPool2d, BaseLayer, ConvLayer2d, Dropout2d, SeparableConv2d
  from cvnets.modules import BaseModule
  from utils import logger
  from utils.ddp_utils import is_master
label_desc: Use image node_id 2 for calling the ASPP obj's underlying member method code with example usage: obj.forward(x) and returns: out