code: def basic_critic(
      in_size: int,  # Input size for the critic (same as the output size of the generator)
      n_channels: int,  # Number of channels of the input for the critic
      n_features: int = 64,  # Number of features used in the critic
      n_extra_layers: int = 0,  # Number of extra hidden layers in the critic
      norm_type: NormType = NormType.Batch,  # Type of normalization to use in the critic
      **kwargs,
  ) -> nn.Sequential:
      "A basic critic for images `n_channels` x `in_size` x `in_size`."
      layers = [
          ConvLayer(
              n_channels, n_features, 4, 2, 1, norm_type=None, **kwargs
          )
      ]
      cur_size, cur_ftrs = in_size // 2, n_features
      layers += [
          ConvLayer(
              cur_ftrs, cur_ftrs, 3, 1, norm_type=norm_type, **kwargs
          )
          for _ in range(n_extra_layers)
      ]
      while cur_size > 4:
          layers.append(
              ConvLayer(
                  cur_ftrs,
                  cur_ftrs * 2,
                  4,
                  2,
                  1,
                  norm_type=norm_type,
                  **kwargs,
              )
          )
          cur_ftrs *= 2
          cur_size //= 2
      init = kwargs.get("init", nn.init.kaiming_normal_)
      layers += [
          init_default(nn.Conv2d(cur_ftrs, 1, 4, padding=0), init),
          Flatten(),
      ]
      return nn.Sequential(*layers)
  
imports: from __future__ import annotations
  from ..basics import *
  from .all import *
label_desc: Use image node_id 1 for calling a global function with example usage: basic_critic(in_size, n_channels, n_features, n_extra_layers, norm_type) and returns: nn