class_docstr: Convolution + upsampling network module.
class_docstr_tok: ["Convolution","+","upsampling","network","module","."]
docstr: Calculate forward propagation.
  
  Args:
      c (Tensor): Input tensor (B, C, T_feats).
  
  Returns:
      Tensor: Upsampled tensor (B, C, T_wav),
          where T_wav = T_feats * prod(upsample_scales).
docstr_tok: ["Calculate","forward","propagation",".","Args",":","c","(","Tensor",")",":","Input","tensor","(","B",",","C",",","T_feats",")",".","Returns",":","Tensor",":","Upsampled","tensor","(","B",",","C",",","T_wav",")",",","where","T_wav","=","T_feats","*","prod","(","upsample_scales",")","."]
code: def forward(self, c: torch.Tensor) -> torch.Tensor:
      """Calculate forward propagation.
  
      Args:
          c (Tensor): Input tensor (B, C, T_feats).
  
      Returns:
          Tensor: Upsampled tensor (B, C, T_wav),
              where T_wav = T_feats * prod(upsample_scales).
  
      """
      c = self.conv_in(self.pad(c))
      return self.upsample(c)
  
imports: from typing import Any, Dict, List, Optional
  import numpy
  import torch
  import torch.nn.functional
  from espnet2.gan_tts.wavenet.residual_block import Conv1d
label_desc: Use image node_id 2 for calling the ConvInUpsampleNetwork obj's underlying member method code with example usage: obj.forward(c) and returns: self