class_docstr: Lightweight Convolution assuming the input is BxCxT
  This is just an example that explains LightConv clearer than the TBC version.
  We don't use this module in the model.
  
  Args:
      input_size: # of channels of the input and output
      kernel_size: convolution channels
      padding: padding
      num_heads: number of heads used. The weight is of shape
          `(num_heads, 1, kernel_size)`
      weight_softmax: normalize the weight with softmax before the convolution
  
  Shape:
      Input: BxCxT, i.e. (batch_size, input_size, timesteps)
      Output: BxCxT, i.e. (batch_size, input_size, timesteps)
  
  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)`
code: def reset_parameters(self):
      nn.init.xavier_uniform_(self.weight)
      if self.bias is not None:
          nn.init.constant_(self.bias, 0.0)
  
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 2 for calling the LightweightConv1d obj's underlying member method code with example usage: obj.reset_parameters() without return types