class_docstr: Wavenet layers with weight norm and no input conditioning.
  
       |-----------------------------------------------------------------------------|
       |                                    |-> tanh    -|                           |
  res -|- conv1d(dilation) -> dropout -> + -|            * -> conv1d1x1 -> split -|- + -> res
  g -------------------------------------|  |-> sigmoid -|                        |
  o --------------------------------------------------------------------------- + --------- o
  
  Args:
      in_channels (int): number of input channels.
      hidden_channes (int): number of hidden channels.
      kernel_size (int): filter kernel size for the first conv layer.
      dilation_rate (int): dilations rate to increase dilation per layer.
          If it is 2, dilations are 1, 2, 4, 8 for the next 4 layers.
      num_layers (int): number of wavenet layers.
      c_in_channels (int): number of channels of conditioning input.
      dropout_p (float): dropout rate.
      weight_norm (bool): enable/disable weight norm for convolution layers.
code: def remove_weight_norm(self):
      if self.c_in_channels != 0:
          torch.nn.utils.remove_weight_norm(self.cond_layer)
      for l in self.in_layers:
          torch.nn.utils.remove_weight_norm(l)
      for l in self.res_skip_layers:
          torch.nn.utils.remove_weight_norm(l)
  
file_path: TTS/TTS/tts/layers/generic/wavenet.py
imports: import torch
  from torch import nn
label_desc: Use image node_id 3 for calling the WN obj's underlying member method code with example usage: obj.remove_weight_norm() without return types