class_docstr: A single causal convolution applies the causal convolution itself, weight normalization, and
  an activation function.
docstr: Computes the causal convolution for the provided sequence. Inputs are padded such that
  the output sequence length
  
  Args:
      sequences: Tensor of shape `[batch_size, in_channels, sequence_length]`.
  
  Returns:
      Tensor of shape `[batch_size, out_channels, sequence_length]`.
docstr_tok: ["Computes","the","causal","convolution","for","the","provided","sequence",".","Inputs","are","padded","such","that","the","output","sequence","length","Args",":","sequences",":","Tensor","of","shape","`","[","batch_size",",","in_channels",",","sequence_length","]","`",".","Returns",":","Tensor","of","shape","`","[","batch_size",",","out_channels",",","sequence_length","]","`","."]
code: def forward(self, sequences: torch.Tensor) -> torch.Tensor:
      """
      Computes the causal convolution for the provided sequence. Inputs are padded such that
      the output sequence length
  
      Args:
          sequences: Tensor of shape `[batch_size, in_channels, sequence_length]`.
  
      Returns:
          Tensor of shape `[batch_size, out_channels, sequence_length]`.
      """
      # Pad sequences on the left only
      padded_sequences = F.pad(sequences, pad=(self.padding, 0))
      # After running the convolution, the length of the sequence equals the input's
      out = self.normalized_conv(padded_sequences)
      return self.activation(out)
  
imports: import torch
  import torch.nn.functional
label_desc: Use image node_id 2 for calling the CausalConvolution obj's underlying member method code with example usage: obj.forward(sequences) and returns: self