code: def __init__(
      self, in_features, out_features, bias=False, binary_act=True
  ):
      super(BiLinearLSR, self).__init__(
          in_features, out_features, bias=bias
      )
      self.binary_act = binary_act
  
      # must register a nn.Parameter placeholder for model loading
      # self.register_parameter('scale', None) doesn't register None into state_dict
      # so it leads to unexpected key error when loading saved model
      # hence, init scale with Parameter
      # however, Parameter(None) actually has size [0], not [] as a scalar
      # hence, init it using the following trick
      self.register_parameter(
          "scale", Parameter(torch.Tensor([0.0]).squeeze())
      )
  
imports: import dgl
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.autograd import Function
  from torch.nn import Parameter
  from torch.nn.modules.utils import _single
label_desc: Use image node_id 1 to create a new BiLinearLSR object from inherited base classes: torch.nn with example: obj = BiLinearLSR(in_features, out_features, bias, binary_act)