code: def test_GraphConvolution_dense():
      G, features = create_graph_features()
  
      # We need to specify the batch shape as one for the GraphConvolutional logic to work
      x_t = Input(batch_shape=(1,) + features.shape, name="X")
      A_t = Input(batch_shape=(1, 3, 3), name="A")
  
      # Note we add a batch dimension of 1 to model inputs
      adj = G.to_adjacency_matrix().toarray()[None, :, :]
      x = features[None, :, :]
  
      out = GraphConvolution(2)([x_t, A_t])
      model = keras.Model(inputs=[x_t, A_t], outputs=out)
      preds = model.predict([x, adj], batch_size=1)
      assert preds.shape == (1, 3, 2)
  
      # batch dimension > 1 should work with a dense matrix
      x_t = Input(batch_shape=(10,) + features.shape)
      A_t = Input(batch_shape=(10, 3, 3))
      input_data = [
          np.broadcast_to(x, x_t.shape),
          np.broadcast_to(adj, A_t.shape),
      ]
  
      out = GraphConvolution(2)([x_t, A_t])
      model = keras.Model(inputs=[x_t, A_t], outputs=out)
  
      preds = model.predict(input_data, batch_size=10)
      assert preds.shape == (10, 3, 2)
      for i in range(1, 10):
          # every batch element had the same input data, so the predictions should all be identical
          np.testing.assert_array_equal(preds[i, ...], preds[0, ...])
  
imports: import stellargraph
  from stellargraph.layer.gcn import *
  from stellargraph.mapper import FullBatchNodeGenerator, FullBatchLinkGenerator
  from stellargraph.core.graph import StellarGraph
  from stellargraph.core.utils import GCN_Aadj_feats_op
  import networkx
  import pandas
  import numpy
  from tensorflow import keras
  import tensorflow
  import pytest
  from ..test_utils.graphs import create_graph_features
  from ..None import test_utils
label_desc: Use image node_id 3 for calling a global function with example usage: test_GraphConvolution_dense() without return types