code: def __init__(
      self,
      in_channels: int,
      num_classes: Optional[int] = None,
      *,
      num_scales: int = 3,
      num_layers: int = 4,
      latent_channels: int = 64,
      activation: str = "leaky_relu_0.2",
      norm_type: Optional[str] = None,
  ):
      if num_classes is not None:
          msg = "`MultiScaleDiscriminator` does not support conditional inputs"
          raise ValueError(msg)
      super().__init__(in_channels, num_classes)
      self.num_layers = num_layers
      self.latent_channels = latent_channels
      self.activation = activation
      self.norm_type = norm_type
      self.downsample = nn.AvgPool2d(
          3,
          stride=2,
          padding=[1, 1],
          count_include_pad=False,
      )
      nets = [self._make() for _ in range(num_scales)]
      self.discriminators = nn.ModuleList(nets)
      self.apply(weights_init)
  
imports: import torch
  import torch.nn
  from typing import Any
  from typing import Dict
  from typing import List
  from typing import Type
  from typing import Optional
  from cftool.misc import WithRegister
  from ....losses.gan import DiscriminatorOutput
  from ....modules.blocks import get_conv_blocks
  from ....modules.blocks import Conv2d
label_desc: Use image node_id 1 to create a new MultiScaleDiscriminator object from inherited base classes: DiscriminatorBase with example: obj = MultiScaleDiscriminator(in_channels, num_classes)