class_docstr: Stack of Glow Decoder Modules.
  Squeeze -> ActNorm -> InvertibleConv1x1 -> AffineCoupling -> Unsqueeze
  
  Args:
      in_channels (int): channels of input tensor.
      hidden_channels (int): hidden decoder channels.
      kernel_size (int): Coupling block kernel size. (Wavenet filter kernel size.)
      dilation_rate (int): rate to increase dilation by each layer in a decoder block.
      num_flow_blocks (int): number of decoder blocks.
      num_coupling_layers (int): number coupling layers. (number of wavenet layers.)
      dropout_p (float): wavenet dropout rate.
      sigmoid_scale (bool): enable/disable sigmoid scaling in coupling layer.
class_docstr_tok: ["Stack","of","Glow","Decoder","Modules",".","Squeeze","-",">","ActNorm","-",">","InvertibleConv1x1","-",">","AffineCoupling","-",">","Unsqueeze","Args",":","in_channels","(","int",")",":","channels","of","input","tensor",".","hidden_channels","(","int",")",":","hidden","decoder","channels",".","kernel_size","(","int",")",":","Coupling","block","kernel","size",".","(","Wavenet","filter","kernel","size",".",")","dilation_rate","(","int",")",":","rate","to","increase","dilation","by","each","layer","in","a","decoder","block",".","num_flow_blocks","(","int",")",":","number","of","decoder","blocks",".","num_coupling_layers","(","int",")",":","number","coupling","layers",".","(","number","of","wavenet","layers",".",")","dropout_p","(","float",")",":","wavenet","dropout","rate",".","sigmoid_scale","(","bool",")",":","enable\/disable","sigmoid","scaling","in","coupling","layer","."]
code: def forward(self, x, x_mask, g=None, reverse=False):
      if not reverse:
          flows = self.flows
          logdet_tot = 0
      else:
          flows = reversed(self.flows)
          logdet_tot = None
  
      if self.num_squeeze > 1:
          x, x_mask = squeeze(x, x_mask, self.num_squeeze)
      for f in flows:
          if not reverse:
              x, logdet = f(x, x_mask, g=g, reverse=reverse)
              logdet_tot += logdet
          else:
              x, logdet = f(x, x_mask, g=g, reverse=reverse)
      if self.num_squeeze > 1:
          x, x_mask = unsqueeze(x, x_mask, self.num_squeeze)
      return x, logdet_tot
  
file_path: TTS/TTS/tts/layers/glow_tts/decoder.py
imports: import torch
  from torch import nn
  from TTS.tts.layers.glow_tts.glow import InvConvNear, CouplingBlock
  from TTS.tts.layers.generic.normalization import ActNorm
label_desc: Use image node_id 2 for calling the Decoder obj's underlying member method code with example usage: obj.forward(x, x_mask, g, reverse) and returns: x,  logdet_tot