class_docstr: Performs self convolution to each node
docstr: Parameters
  ----------
  input_feature: int
      Size of input feature size
  output_feature: int
      Size of output feature size
  dropout: float, defult 0.2
      p value for dropout between 0.0 to 1.0
  UseBN: bool
      Setting it to True will perform Batch Normalisation
docstr_tok: ["Parameters","--","--","--","--","--","input_feature",":","int","Size","of","input","feature","size","output_feature",":","int","Size","of","output","feature","size","dropout",":","float",",","defult","0.2","p","value","for","dropout","between","0.0","to","1.0","UseBN",":","bool","Setting","it","to","True","will","perform","Batch","Normalisation"]
code: def __init__(
      self,
      input_feature: int,
      output_feature: int,
      dropout: float = 0.2,
      UseBN: bool = True,
  ):
      """
      Parameters
      ----------
      input_feature: int
          Size of input feature size
      output_feature: int
          Size of output feature size
      dropout: float, defult 0.2
          p value for dropout between 0.0 to 1.0
      UseBN: bool
          Setting it to True will perform Batch Normalisation
      """
      super(Atom_Wise_Convolution, self).__init__()
      self.conv_weights = nn.Linear(input_feature, output_feature)
      self.batch_norm = nn.LayerNorm(output_feature)
      self.UseBN = UseBN
      self.activation = Shifted_softplus()
      self.dropout = nn.Dropout(p=dropout)
  
imports: import torch
  import torch.nn
  from deepchem.models.torch_models.torch_model import TorchModel
  from deepchem.models.losses import L2Loss
label_desc: Use image node_id 1 to create a new Atom_Wise_Convolution object from inherited base classes: nn with example: obj = Atom_Wise_Convolution(input_feature, output_feature, dropout, UseBN)