class_docstr: Lightweight Convolution assuming the input is TxBxC
  Args:
      input_size: # of channels of the input
      kernel_size: convolution channels
      padding_l: padding to the left when using "same" padding
      num_heads: number of heads used. The weight is of shape (num_heads, 1, kernel_size)
      weight_dropout: the drop rate of the DropConnect to drop the weight
      weight_softmax: normalize the weight with softmax before the convolution
      bias: use bias
  
  Shape:
      Input: TxBxC, i.e. (timesteps, batch_size, input_size)
      Output: TxBxC, i.e. (timesteps, batch_size, input_size)
  
  Attributes:
      weight: the learnable weights of the module of shape
          `(num_heads, 1, kernel_size)`
      bias:   the learnable bias of the module of shape `(input_size)`
docstr: Assuming the input, x, of the shape T x B x C and producing an output in the shape T x B x C
  args:
      x: Input of shape T x B x C, i.e. (timesteps, batch_size, input_size)
      incremental_state: A dict to keep the state
      unfold: unfold the input or not. If not, we use the matrix trick instead
docstr_tok: ["Assuming","the","input",",","x",",","of","the","shape","T","x","B","x","C","and","producing","an","output","in","the","shape","T","x","B","x","C","args",":","x",":","Input","of","shape","T","x","B","x","C",",","i.e",".","(","timesteps",",","batch_size",",","input_size",")","incremental_state",":","A","dict","to","keep","the","state","unfold",":","unfold","the","input","or","not",".","If","not",",","we","use","the","matrix","trick","instead"]
code: def forward(self, x, incremental_state=None, unfold=False):
      """Assuming the input, x, of the shape T x B x C and producing an output in the shape T x B x C
      args:
          x: Input of shape T x B x C, i.e. (timesteps, batch_size, input_size)
          incremental_state: A dict to keep the state
          unfold: unfold the input or not. If not, we use the matrix trick instead
      """
      unfold = unfold or (incremental_state is not None)
  
      if unfold:
          output = self._forward_unfolded(x, incremental_state)
      else:
          output = self._forward_expanded(x, incremental_state)
  
      if self.bias is not None:
          output = output + self.bias.view(1, 1, -1)
      return output
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from fairseq import utils
  from fairseq.incremental_decoding_utils import with_incremental_state
  from fairseq.modules.fairseq_dropout import FairseqDropout
  from fairseq.modules.unfold import unfold1d
label_desc: Use image node_id 3 for calling the LightweightConv1dTBC obj's underlying member method code with example usage: obj.forward(x, incremental_state, unfold) and returns: output