class_docstr: GroverEmbedding layer.
  
  This layer is a simple wrapper over GroverTransEncoder layer for retrieving the embeddings from the GroverTransEncoder layer.
  
  Parameters
  ----------
  edge_fdim: int
      the dimension of additional feature for edge/bond.
  node_fdim: int
      the dimension of additional feature for node/atom.
  depth: int
      Dynamic message passing depth for use in MPNEncoder
  undirected: bool
      The message passing is undirected or not
  num_mt_block: int
      the number of message passing blocks.
  num_head: int
      the number of attention heads.
class_docstr_tok: ["GroverEmbedding","layer",".","This","layer","is","a","simple","wrapper","over","GroverTransEncoder","layer","for","retrieving","the","embeddings","from","the","GroverTransEncoder","layer",".","Parameters","--","--","--","--","--","edge_fdim",":","int","the","dimension","of","additional","feature","for","edge\/bond",".","node_fdim",":","int","the","dimension","of","additional","feature","for","node\/atom",".","depth",":","int","Dynamic","message","passing","depth","for","use","in","MPNEncoder","undirected",":","bool","The","message","passing","is","undirected","or","not","num_mt_block",":","int","the","number","of","message","passing","blocks",".","num_head",":","int","the","number","of","attention","heads","."]
docstr: Forward function
  
  Parameters
  ----------
  graph_batch: List[torch.Tensor]
      A list containing f_atoms, f_bonds, a2b, b2a, b2revb, a_scope, b_scope, a2a
  
  Returns
  -------
  embedding: Dict[str, torch.Tensor]
      Returns a dictionary of embeddings. The embeddings are:
   - atom_from_atom: node messages aggregated from node hidden states
   - bond_from_atom: bond messages aggregated from bond hidden states
   - atom_from_bond: node message aggregated from bond hidden states
   - bond_from_bond: bond messages aggregated from bond hidden states.
code: def forward(self, graph_batch: List[torch.Tensor]):
      """Forward function
  
      Parameters
      ----------
      graph_batch: List[torch.Tensor]
          A list containing f_atoms, f_bonds, a2b, b2a, b2revb, a_scope, b_scope, a2a
  
      Returns
      -------
      embedding: Dict[str, torch.Tensor]
          Returns a dictionary of embeddings. The embeddings are:
       - atom_from_atom: node messages aggregated from node hidden states
       - bond_from_atom: bond messages aggregated from bond hidden states
       - atom_from_bond: node message aggregated from bond hidden states
       - bond_from_bond: bond messages aggregated from bond hidden states.
      """
      # TODO Explain in detail what the four outcompes are
      output = self.encoders(graph_batch)
      return {
          "atom_from_atom": output[0][0],
          "bond_from_atom": output[0][1],
          "atom_from_bond": output[1][0],
          "bond_from_bond": output[1][1],
      }
  
imports: from typing import List, Dict
  import numpy
  from scipy import stats
  from deepchem.models.torch_models.readout import GroverReadout
  from deepchem.models.torch_models.layers import SublayerConnection, PositionwiseFeedForward
label_desc: Use image node_id 2 for calling the GroverEmbedding obj's underlying member method code with example usage: obj.forward(graph_batch) and returns: dict