code: def test_graph_cnn_layer():
      """Test the graph conv layer"""
  
      feat_input = build_input_dict(dims=[100, 5, 7])["in_key"]
      adj_matrix_batch = (
          construct_pre_processing_matrix()[0]
          .repeat([100, 1, 1])
          .to(torch.float32)
      )
      graph_conv_layer = GraphConvLayer(
          in_features=7, out_features=11, bias=False
      )
      assert graph_conv_layer.weight.requires_grad is True
      assert graph_conv_layer.weight.shape == torch.Size([7, 11])
      assert graph_conv_layer.bias is None
      str(graph_conv_layer)
      out = graph_conv_layer(feat_input, adj_matrix_batch)
      assert out.shape == torch.Size([100, 5, 11])
  
      graph_conv_layer = GraphConvLayer(
          in_features=7, out_features=11, bias=True
      )
      assert graph_conv_layer.weight.requires_grad is True
      assert graph_conv_layer.weight.shape == torch.Size([7, 11])
      assert graph_conv_layer.bias is not None
      assert graph_conv_layer.bias.requires_grad is True
      assert graph_conv_layer.bias.shape == torch.Size([11])
      out = graph_conv_layer(feat_input, adj_matrix_batch)
      assert out.shape == torch.Size([100, 5, 11])
      str(graph_conv_layer)
  
file_path: maze/maze/test/perception/blocks/test_graph_cnn.py
imports: from typing import Tuple, Dict
  import pytest
  import torch
  import torch.nn
  from maze.perception.blocks.feed_forward.graph_conv import GraphConvBlock, GraphConvLayer
  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 5 for calling a global function with example usage: test_graph_cnn_layer() without return types