docstr: Conv1d with Layer Normalization and residual connection as in GlowTTS paper.
  https://arxiv.org/pdf/1811.00002.pdf
  
   x |-> conv1d -> layer_norm -> relu -> dropout -> + -> o
     |---------------> conv1d_1x1 -----------------------|
  
  Args:
      in_channels (int): number of input tensor channels.
      hidden_channels (int): number of inner layer channels.
      out_channels (int): number of output tensor channels.
      kernel_size (int): kernel size of conv1d filter.
      num_layers (int): number of blocks.
      dropout_p (float): dropout rate for each block.
docstr_tok: ["Conv1d","with","Layer","Normalization","and","residual","connection","as","in","GlowTTS","paper",".","https",":","\/\/arxiv.org\/pdf\/1811.00002.pdf","x","|-",">","conv1d","-",">","layer_norm","-",">","relu","-",">","dropout","-",">","+","-",">","o","|","--","--","--","--","--","--","--","-",">","conv1d_1x1","--","--","--","--","--","--","--","--","--","--","--","-|","Args",":","in_channels","(","int",")",":","number","of","input","tensor","channels",".","hidden_channels","(","int",")",":","number","of","inner","layer","channels",".","out_channels","(","int",")",":","number","of","output","tensor","channels",".","kernel_size","(","int",")",":","kernel","size","of","conv1d","filter",".","num_layers","(","int",")",":","number","of","blocks",".","dropout_p","(","float",")",":","dropout","rate","for","each","block","."]
code: def __init__(
      self,
      in_channels,
      hidden_channels,
      out_channels,
      kernel_size,
      num_layers,
      dropout_p,
  ):
      """Conv1d with Layer Normalization and residual connection as in GlowTTS paper.
      https://arxiv.org/pdf/1811.00002.pdf
  
       x |-> conv1d -> layer_norm -> relu -> dropout -> + -> o
         |---------------> conv1d_1x1 -----------------------|
  
      Args:
          in_channels (int): number of input tensor channels.
          hidden_channels (int): number of inner layer channels.
          out_channels (int): number of output tensor channels.
          kernel_size (int): kernel size of conv1d filter.
          num_layers (int): number of blocks.
          dropout_p (float): dropout rate for each block.
      """
      super().__init__()
      self.in_channels = in_channels
      self.hidden_channels = hidden_channels
      self.out_channels = out_channels
      self.kernel_size = kernel_size
      self.num_layers = num_layers
      self.dropout_p = dropout_p
      assert num_layers > 1, " [!] number of layers should be > 0."
      assert (
          kernel_size % 2 == 1
      ), " [!] kernel size should be odd number."
  
      self.conv_layers = nn.ModuleList()
      self.norm_layers = nn.ModuleList()
  
      for idx in range(num_layers):
          self.conv_layers.append(
              nn.Conv1d(
                  in_channels if idx == 0 else hidden_channels,
                  hidden_channels,
                  kernel_size,
                  padding=kernel_size // 2,
              )
          )
          self.norm_layers.append(LayerNorm(hidden_channels))
  
      self.proj = nn.Conv1d(hidden_channels, out_channels, 1)
      self.proj.weight.data.zero_()
      self.proj.bias.data.zero_()
  
file_path: TTS/TTS/tts/layers/glow_tts/glow.py
imports: import torch
  from torch import nn
  from torch.nn import functional
  from TTS.tts.layers.generic.wavenet import WN
  from ..generic.normalization import LayerNorm
label_desc: Use image node_id 1 to create a new ResidualConv1dLayerNormBlock object from inherited base classes: nn with example: obj = ResidualConv1dLayerNormBlock(in_channels, hidden_channels, out_channels, kernel_size, num_layers, dropout_p)