class_docstr: A single causal convolution applies the causal convolution itself, weight normalization, and
  an activation function.
docstr: Args:
      in_channels: The number of input channels.
      out_channels: The number of output channels.
      kernel_size: The kernel size to use for the convolution.
      dilation: The dilation parameter to use for the causal convolution.
docstr_tok: ["Args",":","in_channels",":","The","number","of","input","channels",".","out_channels",":","The","number","of","output","channels",".","kernel_size",":","The","kernel","size","to","use","for","the","convolution",".","dilation",":","The","dilation","parameter","to","use","for","the","causal","convolution","."]
code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      kernel_size: int,
      dilation: int,
  ):
      """
      Args:
          in_channels: The number of input channels.
          out_channels: The number of output channels.
          kernel_size: The kernel size to use for the convolution.
          dilation: The dilation parameter to use for the causal convolution.
      """
      super().__init__()
  
      conv = torch.nn.Conv1d(
          in_channels,
          out_channels,
          kernel_size=kernel_size,
          dilation=dilation,
      )
      self.padding = (kernel_size - 1) * dilation
      self.normalized_conv = torch.nn.utils.weight_norm(conv)
      self.activation = torch.nn.LeakyReLU()
  
imports: import torch
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new CausalConvolution object from inherited base classes: torch.nn with example: obj = CausalConvolution(in_channels, out_channels, kernel_size, dilation)