code: def __init__(self, in_channels, out_channels, groups=1, bias=True):
      super().__init__()
      assert in_channels % groups == 0 and out_channels % groups == 0
  
      self.in_channels = in_channels
      self.out_channels = out_channels
      self.groups = groups
  
      self.weight = Parameter(
          torch.empty(
              groups, in_channels // groups, out_channels // groups
          )
      )
  
      if bias:
          self.bias = Parameter(torch.empty(out_channels))
      else:
          self.register_parameter("bias", None)
  
      self.reset_parameters()
  
imports: import math
  from typing import Optional
  import torch
  import torch.nn.functional
  from torch import Tensor
  from torch.nn import Parameter
  from torch_geometric.nn.conv import MessagePassing
  from torch_geometric.nn.conv.gcn_conv import gcn_norm
  from torch_geometric.nn.inits import kaiming_uniform, uniform
  from torch_geometric.typing import Adj, OptPairTensor, OptTensor, SparseTensor
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, groups, bias)