code: def test_graph_multi_head_layer():
      """Test the graph conv layer"""
  
      feat_input = build_input_dict(dims=[100, 5, 7])["in_key"]
      adj_matrix_batch = (
          construct_pre_processing_matrix_adj_bar()[0]
          .repeat([100, 1, 1])
          .to(torch.float32)
      )
      graph_conv_layer = GraphMultiHeadAttentionLayer(
          in_features=7,
          out_features=11,
          alpha=0.2,
          n_heads=3,
          dropout=0,
          avg_out=False,
      )
      str(graph_conv_layer)
      out = graph_conv_layer(feat_input, adj_matrix_batch)
      assert out.shape == torch.Size([100, 5, 33])
  
file_path: maze/maze/test/perception/blocks/test_graph_attention.py
imports: from typing import Dict, Tuple
  import torch
  import torch.nn
  from maze.perception.blocks.feed_forward.graph_attention import GraphAttentionBlock, GraphAttentionLayer, GraphMultiHeadAttentionLayer
  from maze.perception.weight_init import make_module_init_normc
  from maze.test.perception.perception_test_utils import build_input_dict
label_desc: Use image node_id 4 for calling a global function with example usage: test_graph_multi_head_layer() without return types