class_docstr: Utility layer that converts data from disjoint mode to batch mode by
  zero-padding the node features and adjacency matrices.
  
  **Mode**: disjoint.
  
  **This layer expects a sparse adjacency matrix.**
  
  **Input**
  
  - Node features of shape `(n_nodes, n_node_features)`;
  - Binary adjacency matrix of shape `(n_nodes, n_nodes)`;
  - Graph IDs of shape `(n_nodes, )`;
  
  **Output**
  
  - Batched node features of shape `(batch, N_max, n_node_features)`;
  - Batched adjacency matrix of shape `(batch, N_max, N_max)`;
code: def call(self, inputs, **kwargs):
      X, A, I = inputs
  
      batch_X = ops.disjoint_signal_to_batch(X, I)
      batch_A = ops.disjoint_adjacency_to_batch(A, I)
  
      # Ensure that the channel dimension is known
      batch_X.set_shape((None, None, X.shape[-1]))
      batch_A.set_shape((None, None, None))
  
      return batch_X, batch_A
  
imports: import numpy
  import tensorflow
  from tensorflow.keras import activations
  from tensorflow.keras import backend
  from tensorflow.keras import constraints, initializers, regularizers
  from tensorflow.keras.layers import Layer
  from tensorflow.python.framework import smart_cond
  from spektral.layers import ops
label_desc: Use image node_id 3 for calling the Disjoint2Batch obj's underlying member method code with example usage: obj.call(inputs) and returns: batch_X,  batch_A