class_docstr: Activation Normalization bijector as an alternative to Batch Norm. It computes
  mean and std from a sample data in advance and it uses these values
  for normalization at training.
  
  Args:
      channels (int): input channels.
      ddi (False): data depended initialization flag.
  
  Shapes:
      - inputs: (B, C, T)
      - outputs: (B, C, T)
class_docstr_tok: ["Activation","Normalization","bijector","as","an","alternative","to","Batch","Norm",".","It","computes","mean","and","std","from","a","sample","data","in","advance","and","it","uses","these","values","for","normalization","at","training",".","Args",":","channels","(","int",")",":","input","channels",".","ddi","(","False",")",":","data","depended","initialization","flag",".","Shapes",":","-","inputs",":","(","B",",","C",",","T",")","-","outputs",":","(","B",",","C",",","T",")"]
code: def forward(
      self, x, x_mask=None, reverse=False, **kwargs
  ):  # pylint: disable=unused-argument
      if x_mask is None:
          x_mask = torch.ones(x.size(0), 1, x.size(2)).to(
              device=x.device, dtype=x.dtype
          )
      x_len = torch.sum(x_mask, [1, 2])
      if not self.initialized:
          self.initialize(x, x_mask)
          self.initialized = True
  
      if reverse:
          z = (x - self.bias) * torch.exp(-self.logs) * x_mask
          logdet = None
      else:
          z = (self.bias + torch.exp(self.logs) * x) * x_mask
          logdet = torch.sum(self.logs) * x_len  # [b]
  
      return z, logdet
  
file_path: TTS/TTS/tts/layers/generic/normalization.py
imports: import torch
  from torch import nn
label_desc: Use image node_id 2 for calling the ActNorm obj's underlying member method code with example usage: obj.forward(x, x_mask, reverse) and returns: z,  logdet