class_docstr: Linear layer with Batch Normalization.
  
  x -> linear -> BN -> o
  
  Args:
      in_features (int): number of channels in the input tensor.
      out_features (int ): number of channels in the output tensor.
      bias (bool, optional): enable/disable bias in the linear layer. Defaults to True.
      init_gain (str, optional): method to set the gain for weight initialization. Defaults to 'linear'.
class_docstr_tok: ["Linear","layer","with","Batch","Normalization",".","x","-",">","linear","-",">","BN","-",">","o","Args",":","in_features","(","int",")",":","number","of","channels","in","the","input","tensor",".","out_features","(","int",")",":","number","of","channels","in","the","output","tensor",".","bias","(","bool",",","optional",")",":","enable\/disable","bias","in","the","linear","layer",".","Defaults","to","True",".","init_gain","(","str",",","optional",")",":","method","to","set","the","gain","for","weight","initialization",".","Defaults","to","'linear","'","."]
docstr: Shapes:
      x: [T, B, C] or [B, C]
docstr_tok: ["Shapes",":","x",":","[","T",",","B",",","C","]","or","[","B",",","C","]"]
code: def forward(self, x):
      """
      Shapes:
          x: [T, B, C] or [B, C]
      """
      out = self.linear_layer(x)
      if len(out.shape) == 3:
          out = out.permute(1, 2, 0)
      out = self.batch_normalization(out)
      if len(out.shape) == 3:
          out = out.permute(2, 0, 1)
      return out
  
file_path: TTS/TTS/tts/layers/tacotron/common_layers.py
imports: import torch
  from torch import nn
  from torch.nn import functional
label_desc: Use image node_id 3 for calling the LinearBN obj's underlying member method code with example usage: obj.forward(x) and returns: out