class_docstr: Multi-Scale (MSD) Discriminator,
  
  Args:
      in_channels (int): Number of input channels.
      out_channels (int): Number of output channels.
      downsample_factor (int): Downsampling factor between the different scales.
      scale_norms (Sequence[str]): Normalization for each sub-discriminator.
      **kwargs: Additional args for ScaleDiscriminator.
class_docstr_tok: ["Multi-Scale","(","MSD",")","Discriminator",",","Args",":","in_channels","(","int",")",":","Number","of","input","channels",".","out_channels","(","int",")",":","Number","of","output","channels",".","downsample_factor","(","int",")",":","Downsampling","factor","between","the","different","scales",".","scale_norms","(","Sequence","[","str","]",")",":","Normalization","for","each","sub-discriminator",".","*","*","kwargs",":","Additional","args","for","ScaleDiscriminator","."]
code: def __init__(
      self,
      in_channels: int = 1,
      out_channels: int = 1,
      downsample_factor: int = 2,
      scale_norms: tp.Sequence[str] = [
          "weight_norm",
          "weight_norm",
          "weight_norm",
      ],
      **kwargs,
  ):
      super().__init__()
      self.discriminators = nn.ModuleList(
          [
              ScaleDiscriminator(
                  in_channels, out_channels, norm=norm, **kwargs
              )
              for norm in scale_norms
          ]
      )
      self.downsample = nn.AvgPool1d(
          downsample_factor * 2,
          downsample_factor,
          padding=downsample_factor,
      )
  
file_path: audiocraft/audiocraft/adversarial/discriminators/msd.py
imports: import typing
  import numpy
  import torch
  import torch.nn
  from ...modules import NormConv1d
  from .base import MultiDiscriminator, MultiDiscriminatorOutputType
label_desc: Use image node_id 1 to create a new MultiScaleDiscriminator object from inherited base classes: MultiDiscriminator with example: obj = MultiScaleDiscriminator(in_channels, out_channels, downsample_factor, scale_norms)