class_docstr: Applies a linear tranformation to the incoming data.
  
  .. math::
      \mathbf{x}^{\prime} = \mathbf{x} \mathbf{W}^{\top} + \mathbf{b}
  
  In contrast to :class:`torch.nn.Linear`, it supports lazy initialization
  and customizable weight and bias initialization.
  
  Args:
      in_channels (int): Size of each input sample. Will be initialized
          lazily in case it is given as :obj:`-1`.
      out_channels (int): Size of each output sample.
      bias (bool, optional): If set to :obj:`False`, the layer will not learn
          an additive bias. (default: :obj:`True`)
      weight_initializer (str, optional): The initializer for the weight
          matrix (:obj:`"glorot"`, :obj:`"uniform"`, :obj:`"kaiming_uniform"`
          or :obj:`None`).
          If set to :obj:`None`, will match default weight initialization of
          :class:`torch.nn.Linear`. (default: :obj:`None`)
      bias_initializer (str, optional): The initializer for the bias vector
          (:obj:`"zeros"` or :obj:`None`).
          If set to :obj:`None`, will match default bias initialization of
          :class:`torch.nn.Linear`. (default: :obj:`None`)
  
  Shapes:
      - **input:** features :math:`(*, F_{in})`
      - **output:** features :math:`(*, F_{out})`
class_docstr_tok: ["Applies","a","linear","tranformation","to","the","incoming","data",".","..","math",":",":","\\mathbf","{","x","}","^","{","\\prime","}","=","\\mathbf","{","x","}","\\mathbf","{","W","}","^","{","\\top","}","+","\\mathbf","{","b","}","In","contrast","to",":","class",":","`","torch.nn.Linear","`",",","it","supports","lazy","initialization","and","customizable","weight","and","bias","initialization",".","Args",":","in_channels","(","int",")",":","Size","of","each","input","sample",".","Will","be","initialized","lazily","in","case","it","is","given","as",":","obj",":","`","-1","`",".","out_channels","(","int",")",":","Size","of","each","output","sample",".","bias","(","bool",",","optional",")",":","If","set","to",":","obj",":","`","False","`",",","the","layer","will","not","learn","an","additive","bias",".","(","default",":",":","obj",":","`","True","`",")","weight_initializer","(","str",",","optional",")",":","The","initializer","for","the","weight","matrix","(",":","obj",":","`","``","glorot","''","`",",",":","obj",":","`","``","uniform","''","`",",",":","obj",":","`","``","kaiming_uniform","''","`","or",":","obj",":","`","None","`",")",".","If","set","to",":","obj",":","`","None","`",",","will","match","default","weight","initialization","of",":","class",":","`","torch.nn.Linear","`",".","(","default",":",":","obj",":","`","None","`",")","bias_initializer","(","str",",","optional",")",":","The","initializer","for","the","bias","vector","(",":","obj",":","`","``","zeros","''","`","or",":","obj",":","`","None","`",")",".","If","set","to",":","obj",":","`","None","`",",","will","match","default","bias","initialization","of",":","class",":","`","torch.nn.Linear","`",".","(","default",":",":","obj",":","`","None","`",")","Shapes",":","-","*","*","input",":","*","*","features",":","math",":","`","(","*",",","F_","{","in","}",")","`","-","*","*","output",":","*","*","features",":","math",":","`","(","*",",","F_","{","out","}",")","`"]
code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      bias: bool = True,
      weight_initializer: Optional[str] = None,
      bias_initializer: Optional[str] = None,
  ):
      super().__init__()
      self.in_channels = in_channels
      self.out_channels = out_channels
      self.weight_initializer = weight_initializer
      self.bias_initializer = bias_initializer
  
      if in_channels > 0:
          self.weight = Parameter(
              torch.empty(out_channels, in_channels)
          )
      else:
          self.weight = torch.nn.parameter.UninitializedParameter()
          self._hook = self.register_forward_pre_hook(
              self.initialize_parameters
          )
  
      if bias:
          self.bias = Parameter(torch.empty(out_channels))
      else:
          self.register_parameter("bias", None)
  
      self.reset_parameters()
  
imports: import copy
  import math
  from typing import Any, Dict, Optional, Union
  import torch
  import torch.nn.functional
  from torch import Tensor
  from torch.nn.parameter import Parameter
  import torch_geometric.backend
  import torch_geometric.typing
  from torch_geometric import is_compiling
  from torch_geometric.nn import inits
  from torch_geometric.typing import pyg_lib
  from torch_geometric.utils import index_sort, scatter
  from torch_geometric.utils.sparse import index2ptr
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, bias_initializer)