class_docstr: A 1-dimensional convolutional layer with optional weight normalization.
  
  This layer wraps a 1D convolutional layer from PyTorch and applies
  optional weight normalization. The layer can be used in a similar way to
  the convolutional layers in PyTorch's `torch.nn` module.
  
  Args:
      in_channels (int): The number of channels in the input signal.
      out_channels (int): The number of channels in the output signal.
      kernel_size (int, optional): The size of the convolving kernel.
          Defaults to 1.
      stride (int, optional): The stride of the convolution. Defaults to 1.
      padding (int, optional): Zero-padding added to both sides of the input.
          If `None`, the padding will be calculated so that the output has
          the same length as the input. Defaults to `None`.
      dilation (int, optional): Spacing between kernel elements. Defaults to 1.
      bias (bool, optional): If `True`, add bias after convolution. Defaults to `True`.
      w_init_gain (str, optional): The weight initialization function to use.
          Can be either 'linear' or 'relu'. Defaults to 'linear'.
      use_weight_norm (bool, optional): If `True`, apply weight normalization
          to the convolutional weights. Defaults to `False`.
  
  Shapes:
   - Input: :math:`[N, D, T]`
  
  - Output: :math:`[N, out_dim, T]` where `out_dim` is the number of output dimensions.
class_docstr_tok: ["A","1-dimensional","convolutional","layer","with","optional","weight","normalization",".","This","layer","wraps","a","1D","convolutional","layer","from","PyTorch","and","applies","optional","weight","normalization",".","The","layer","can","be","used","in","a","similar","way","to","the","convolutional","layers","in","PyTorch","'s","`","torch.nn","`","module",".","Args",":","in_channels","(","int",")",":","The","number","of","channels","in","the","input","signal",".","out_channels","(","int",")",":","The","number","of","channels","in","the","output","signal",".","kernel_size","(","int",",","optional",")",":","The","size","of","the","convolving","kernel",".","Defaults","to","1.","stride","(","int",",","optional",")",":","The","stride","of","the","convolution",".","Defaults","to","1.","padding","(","int",",","optional",")",":","Zero-padding","added","to","both","sides","of","the","input",".","If","`","None","`",",","the","padding","will","be","calculated","so","that","the","output","has","the","same","length","as","the","input",".","Defaults","to","`","None","`",".","dilation","(","int",",","optional",")",":","Spacing","between","kernel","elements",".","Defaults","to","1.","bias","(","bool",",","optional",")",":","If","`","True","`",",","add","bias","after","convolution",".","Defaults","to","`","True","`",".","w_init_gain","(","str",",","optional",")",":","The","weight","initialization","function","to","use",".","Can","be","either","'linear","'","or","'relu","'",".","Defaults","to","'linear","'",".","use_weight_norm","(","bool",",","optional",")",":","If","`","True","`",",","apply","weight","normalization","to","the","convolutional","weights",".","Defaults","to","`","False","`",".","Shapes",":","-","Input",":",":","math",":","`","[","N",",","D",",","T","]","`","-","Output",":",":","math",":","`","[","N",",","out_dim",",","T","]","`","where","`","out_dim","`","is","the","number","of","output","dimensions","."]
code: def forward(self, signal, mask=None):
      conv_signal = self.conv(signal)
      if mask is not None:
          # always re-zero output if mask is
          # available to match zero-padding
          conv_signal = conv_signal * mask
      return conv_signal
  
imports: from typing import Tuple
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn.utils import parametrize
  from TTS.tts.layers.delightful_tts.kernel_predictor import KernelPredictor
label_desc: Use image node_id 2 for calling the ConvNorm obj's underlying member method code with example usage: obj.forward(signal, mask) and returns: conv_signal