class_docstr: Graph convolution similar to PyG's GraphConv(https://pytorch-geometric.readthedocs.io/en/latest/modules/nn.html#torch_geometric.nn.conv.GraphConv)
  
  The difference is that this module performs Hadamard product between node feature and edge feature
  
  Parameters
  ----------
  in_channels (int)
  out_channels (int)
class_docstr_tok: ["Graph","convolution","similar","to","PyG","'s","GraphConv","(","https",":","\/\/pytorch-geometric.readthedocs.io\/en\/latest\/modules\/nn.html","#","torch_geometric.nn.conv.GraphConv",")","The","difference","is","that","this","module","performs","Hadamard","product","between","node","feature","and","edge","feature","Parameters","--","--","--","--","--","in_channels","(","int",")","out_channels","(","int",")"]
code: def forward(self, x, edge_index, edge_weight, size=None):
      x = (x, x)
      out = self.propagate(
          edge_index, x=x, edge_weight=edge_weight, size=size
      )
      out = self.lin_l(out)
      return out + self.lin_r(x[1])
  
imports: from torch_geometric.nn import inits, MessagePassing
  from torch_geometric.nn import radius_graph
  from .features import d_angle_emb, d_theta_phi_emb
  from torch_scatter import scatter
  from torch_sparse import matmul
  import torch
  from torch import nn
  from torch.nn import Embedding
  import torch.nn.functional
  import numpy
label_desc: Use image node_id 3 for calling the EdgeGraphConv obj's underlying member method code with example usage: obj.forward(x, edge_index, edge_weight, size) and returns: unknown