class_docstr: A linear method encapsulation similar to PyG's
  
  Parameters
  ----------
  in_channels (int)
  out_channels (int)
  bias (int)
  weight_initializer (string): (glorot or zeros)
class_docstr_tok: ["A","linear","method","encapsulation","similar","to","PyG's","Parameters","--","--","--","--","--","in_channels","(","int",")","out_channels","(","int",")","bias","(","int",")","weight_initializer","(","string",")",":","(","glorot","or","zeros",")"]
code: def __init__(
      self,
      in_channels,
      out_channels,
      bias=True,
      weight_initializer="glorot",
  ):
      super().__init__()
      self.in_channels = in_channels
      self.out_channels = out_channels
      self.weight_initializer = weight_initializer
  
      self.weight = nn.Parameter(
          torch.Tensor(out_channels, in_channels)
      )
  
      if bias:
          self.bias = nn.Parameter(torch.Tensor(out_channels))
      else:
          self.register_parameter("bias", None)
  
      self.reset_parameters()
  
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 1 to create a new Linear object from inherited base classes: torch.nn with example: obj = Linear(in_channels, out_channels, bias, weight_initializer)