class_docstr: Residual Convolutional Blocks with BN
  Each block has 'num_conv_block' conv layers and 'num_res_blocks' such blocks are connected
  with residual connections.
  
  conv_block = (conv1d -> relu -> bn) x 'num_conv_blocks'
  residuak_conv_block =  (x -> conv_block ->  + ->) x 'num_res_blocks'
                          ' - - - - - - - - - ^
  Args:
      in_channels (int): number of input channels.
      out_channels (int): number of output channels.
      hidden_channels (int): number of inner convolution channels.
      kernel_size (int): kernel size for convolutional filters.
      dilations (list): dilations for each convolution layer.
      num_res_blocks (int, optional): number of residual blocks. Defaults to 13.
      num_conv_blocks (int, optional): number of convolutional blocks in each residual block. Defaults to 2.
class_docstr_tok: ["Residual","Convolutional","Blocks","with","BN","Each","block","has","'num_conv_block","'","conv","layers","and","'num_res_blocks","'","such","blocks","are","connected","with","residual","connections",".","conv_block","=","(","conv1d","-",">","relu","-",">","bn",")","x","'num_conv_blocks'","residuak_conv_block","=","(","x","-",">","conv_block","-",">","+","-",">",")","x","'num_res_blocks'","'","-","-","-","-","-","-","-","-","-","^","Args",":","in_channels","(","int",")",":","number","of","input","channels",".","out_channels","(","int",")",":","number","of","output","channels",".","hidden_channels","(","int",")",":","number","of","inner","convolution","channels",".","kernel_size","(","int",")",":","kernel","size","for","convolutional","filters",".","dilations","(","list",")",":","dilations","for","each","convolution","layer",".","num_res_blocks","(","int",",","optional",")",":","number","of","residual","blocks",".","Defaults","to","13.","num_conv_blocks","(","int",",","optional",")",":","number","of","convolutional","blocks","in","each","residual","block",".","Defaults","to","2","."]
code: def __init__(
      self,
      in_channels,
      out_channels,
      hidden_channels,
      kernel_size,
      dilations,
      num_res_blocks=13,
      num_conv_blocks=2,
  ):
      super().__init__()
      assert len(dilations) == num_res_blocks
      self.res_blocks = nn.ModuleList()
      for idx, dilation in enumerate(dilations):
          block = Conv1dBNBlock(
              in_channels if idx == 0 else hidden_channels,
              out_channels
              if (idx + 1) == len(dilations)
              else hidden_channels,
              hidden_channels,
              kernel_size,
              dilation,
              num_conv_blocks,
          )
          self.res_blocks.append(block)
  
file_path: TTS/TTS/tts/layers/generic/res_conv_bn.py
imports: from torch import nn
label_desc: Use image node_id 1 to create a new ResidualConv1dBNBlock object from inherited base classes: nn with example: obj = ResidualConv1dBNBlock(in_channels, out_channels, hidden_channels, kernel_size, dilations, num_res_blocks, num_conv_blocks)