class_docstr: Applies an N-dimensional depth-wise separable convolution
      <https://arxiv.org/abs/1610.02357> over an N-dimensional input tensor.
  
  Args:
      opts: Command line arguments.
      in_channels: :math:`C_{in}` from an expected input of size
          :math:`(N, C_{in}, X_{1}, ..., X_{N})`.
      out_channels: :math:`C_{out}` from an expected output of size
          :math:`(N, C_{out}, Y_{1}, ..., Y_{N})`.
      kernel_size: Kernel size for convolution.
      stride: Stride for convolution. Default: 1.
      dilation: Dilation rate for convolution. Default: 1.
      use_norm: Use normalization layer after convolution. Default: ``True``.
      use_act: Use activation layer after convolution (or convolution and normalization).
          Default: ``True``.
      use_act_deptwise: Use activation layer after depthwise convolution (or
          convolution and normalization). Default: ``False``.
          NOTE: We recommend against using activation function in depth-wise convolution.
      bias: Use bias. Default: ``False``.
      padding_mode: Padding mode ('zeros', 'reflect', 'replicate' or 'circular').
          Default: ``zeros``.
      act_name: Use specific activation function. Overrides the one specified in
          command line args. Default: ``None``.
  
  Shape:
      - Input: :math:`(N, C_{in}, X_{1}, ..., X_{N})`.
      - Output: :math:`(N, C_{out}, Y_{1}, ..., Y_{N})`.
  
  .. note::
      For depth-wise convolution, `groups=C_{in}=C_{out}`.
class_docstr_tok: ["Applies","an","N-dimensional","depth-wise","separable","convolution","<","https",":","\/\/arxiv.org\/abs\/1610.02357",">","over","an","N-dimensional","input","tensor",".","Args",":","opts",":","Command","line","arguments",".","in_channels",":",":","math",":","`","C_","{","in","}","`","from","an","expected","input","of","size",":","math",":","`","(","N",",","C_","{","in","}",",","X_","{","1","}",",","...",",","X_","{","N","}",")","`",".","out_channels",":",":","math",":","`","C_","{","out","}","`","from","an","expected","output","of","size",":","math",":","`","(","N",",","C_","{","out","}",",","Y_","{","1","}",",","...",",","Y_","{","N","}",")","`",".","kernel_size",":","Kernel","size","for","convolution",".","stride",":","Stride","for","convolution",".","Default",":","1.","dilation",":","Dilation","rate","for","convolution",".","Default",":","1.","use_norm",":","Use","normalization","layer","after","convolution",".","Default",":","``","True","``",".","use_act",":","Use","activation","layer","after","convolution","(","or","convolution","and","normalization",")",".","Default",":","``","True","``",".","use_act_deptwise",":","Use","activation","layer","after","depthwise","convolution","(","or","convolution","and","normalization",")",".","Default",":","``","False","``",".","NOTE",":","We","recommend","against","using","activation","function","in","depth-wise","convolution",".","bias",":","Use","bias",".","Default",":","``","False","``",".","padding_mode",":","Padding","mode","(","'zeros","'",",","'reflect","'",",","'replicate","'","or","'circular","'",")",".","Default",":","``","zeros","``",".","act_name",":","Use","specific","activation","function",".","Overrides","the","one","specified","in","command","line","args",".","Default",":","``","None","``",".","Shape",":","-","Input",":",":","math",":","`","(","N",",","C_","{","in","}",",","X_","{","1","}",",","...",",","X_","{","N","}",")","`",".","-","Output",":",":","math",":","`","(","N",",","C_","{","out","}",",","Y_","{","1","}",",","...",",","Y_","{","N","}",")","`",".","..","note",":",":","For","depth-wise","convolution",",","`","groups=C_","{","in","}","=C_","{","out","}","`","."]
code: def __repr__(self):
      repr_str = "{}(in_channels={}, out_channels={}, kernel_size={}, stride={}, dilation={})".format(
          self.__class__.__name__,
          self.in_channels,
          self.out_channels,
          self.kernel_size,
          self.stride,
          self.dilation,
      )
      return repr_str
  
imports: import argparse
  from typing import Optional, Tuple, Type, Union
  from torch import Tensor, nn
  from cvnets.layers.activation import build_activation_layer
  from cvnets.layers.base_layer import BaseLayer
  from cvnets.layers.normalization.layer_norm import LayerNorm, LayerNorm2D_NCHW
  from cvnets.layers.normalization_layers import get_normalization_layer
  from utils import logger
label_desc: Use image node_id 3 for calling the _BaseSeparableConv obj's underlying member method code with example usage: obj.__repr__() and returns: repr_str