code: def msg_func(self, edges):
      sbf = self.dense_sbf(edges.data["sbf"])
      # Apply bilinear layer to interactions and basis function activation
      # [None, 8] * [128, 8, 128] * [None, 128] -> [None, 128]
      x_kj = torch.einsum(
          "wj,wl,ijl->wi", sbf, edges.src["x_kj"], self.W_bilin
      )
      return {"x_kj": x_kj}
  
file_path: dgl/examples/pytorch/dimenet/modules/interaction_block.py
imports: import dgl.function
  import torch
  import torch.nn
  from modules.initializers import GlorotOrthogonal
  from modules.residual_layer import ResidualLayer
label_desc: Use image node_id 4 for calling the InteractionBlock obj's underlying member method code with example usage: obj.msg_func(edges) and returns: dict