class_docstr: SBD (Sub-band Discriminator) from https://arxiv.org/pdf/2206.13404.pdf
class_docstr_tok: ["SBD","(","Sub-band","Discriminator",")","from","https",":","\/\/arxiv.org\/pdf\/2206.13404.pdf"]
code: def __init__(self, h, use_spectral_norm=False):
      super(SBD, self).__init__()
      self.config = MDCDConfig(h)
      self.pqmf = PQMF(*self.config.pqmf_params)
      if True in h["sbd_transpose"]:
          self.f_pqmf = PQMF(*self.config.f_pqmf_params)
      else:
          self.f_pqmf = None
  
      self.discriminators = torch.nn.ModuleList()
  
      for _f, _k, _d, _s, _br, _tr in zip(
          self.config.filters,
          self.config.kernel_sizes,
          self.config.dilations,
          self.config.strides,
          self.config.band_ranges,
          self.config.transpose,
      ):
          if _tr:
              segment_dim = self.config.segment_size // _br[1] - _br[0]
          else:
              segment_dim = _br[1] - _br[0]
  
          self.discriminators.append(
              SBDBlock(
                  segment_dim=segment_dim,
                  filters=_f,
                  kernel_size=_k,
                  dilations=_d,
                  strides=_s,
                  use_spectral_norm=use_spectral_norm,
              )
          )
  
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 SBD object from inherited base classes: torch.nn with example: obj = SBD(h, use_spectral_norm)