code: def test_hetero_gnn_forward(self):
      xs = {}
      layers = nn.ModuleDict()
      emb_dim = 5
      feat_dim = 10
      num_samples = 8
      keys = ["a", "b", "c"]
  
      for key in keys:
          layers[key] = nn.Linear(feat_dim, emb_dim)
          xs[key] = torch.ones(num_samples, feat_dim)
  
      ys = forward_op(xs, layers)
      for key in keys:
          self.assertEqual(ys[key].shape[0], num_samples)
          self.assertEqual(ys[key].shape[1], emb_dim)
  
file_path: deepsnap/tests/test_hetero_gnn.py
imports: import math
  import torch
  import unittest
  from torch import nn
  from deepsnap.hetero_gnn import forward_op
label_desc: Use image node_id 1 for calling the TestHeteroGNN obj's underlying member method code with example usage: obj.test_hetero_gnn_forward() without return types