class_docstr: TADE Layer module.
docstr: Calculate forward propagation.
  
  Args:
      x (Tensor): Input tensor (B, in_channels, T).
      c (Tensor): Auxiliary input tensor (B, aux_channels, T').
  
  Returns:
      Tensor: Output tensor (B, in_channels, T * in_upsample_factor).
      Tensor: Upsampled aux tensor (B, in_channels, T * aux_upsample_factor).
docstr_tok: ["Calculate","forward","propagation",".","Args",":","x","(","Tensor",")",":","Input","tensor","(","B",",","in_channels",",","T",")",".","c","(","Tensor",")",":","Auxiliary","input","tensor","(","B",",","aux_channels",",","T","'",")",".","Returns",":","Tensor",":","Output","tensor","(","B",",","in_channels",",","T","*","in_upsample_factor",")",".","Tensor",":","Upsampled","aux","tensor","(","B",",","in_channels",",","T","*","aux_upsample_factor",")","."]
code: def forward(self, x: torch.Tensor, c: torch.Tensor) -> torch.Tensor:
      """Calculate forward propagation.
  
      Args:
          x (Tensor): Input tensor (B, in_channels, T).
          c (Tensor): Auxiliary input tensor (B, aux_channels, T').
  
      Returns:
          Tensor: Output tensor (B, in_channels, T * in_upsample_factor).
          Tensor: Upsampled aux tensor (B, in_channels, T * aux_upsample_factor).
  
      """
      x = self.norm(x)
      c = self.upsample(c)
      c = self.aux_conv(c)
      cg = self.gated_conv(c)
      cg1, cg2 = cg.split(cg.size(1) // 2, dim=1)
      # NOTE(kan-bayashi): Use upsample for noise input here?
      y = cg1 * self.upsample(x) + cg2
      # NOTE(kan-bayashi): Return upsampled aux here?
      return y, c
  
file_path: espnet/espnet2/gan_tts/style_melgan/tade_res_block.py
imports: from functools import partial
  import torch
label_desc: Use image node_id 2 for calling the TADELayer obj's underlying member method code with example usage: obj.forward(x, c) and returns: y,  c