class_docstr: Multiscale Dilated Convolution from https://arxiv.org/pdf/1609.07093.pdf
class_docstr_tok: ["Multiscale","Dilated","Convolution","from","https",":","\/\/arxiv.org\/pdf\/1609.07093.pdf"]
code: def __init__(
      self,
      in_channels,
      out_channels,
      strides,
      kernel_size,
      dilations,
      use_spectral_norm=False,
  ):
      super(MDC, self).__init__()
      norm_f = weight_norm if not use_spectral_norm else spectral_norm
      self.d_convs = torch.nn.ModuleList()
      for _k, _d in zip(kernel_size, dilations):
          self.d_convs.append(
              norm_f(
                  Conv1d(
                      in_channels=in_channels,
                      out_channels=out_channels,
                      kernel_size=_k,
                      dilation=_d,
                      padding=get_padding(_k, _d),
                  )
              )
          )
      self.post_conv = norm_f(
          Conv1d(
              in_channels=out_channels,
              out_channels=out_channels,
              kernel_size=3,
              stride=strides,
              padding=get_padding(_k, _d),
          )
      )
      self.softmax = torch.nn.Softmax(dim=-1)
  
imports: import logging
  from typing import Any, Dict, List, Optional
  import torch
  import torch.nn.functional
  from torch.nn import Conv1d
  from torch.nn.utils import spectral_norm, weight_norm
  from espnet2.gan_svs.visinger2.visinger2_vocoder import MultiFrequencyDiscriminator
  from espnet2.gan_tts.hifigan.residual_block import ResidualBlock
  from espnet2.gan_tts.melgan.pqmf import PQMF
label_desc: Use image node_id 1 to create a new MDC object from inherited base classes: torch.nn with example: obj = MDC(in_channels, out_channels, strides, kernel_size, dilations, use_spectral_norm)