class_docstr: The nn.Module for InfoGraph. This class defines the forward pass of InfoGraph.
  
  References
  ----------
  1. Sun, F.-Y., Hoffmann, J., Verma, V. & Tang, J. InfoGraph: Unsupervised and Semi-supervised Graph-Level Representation Learning via Mutual Information Maximization. Preprint at http://arxiv.org/abs/1908.01000 (2020).
  
  Example
  -------
  >>> from deepchem.models.torch_models.infograph import InfoGraphModel
  >>> from deepchem.feat.molecule_featurizers import MolGraphConvFeaturizer
  >>> from deepchem.feat.graph_data import BatchGraphData
  >>> num_feat = 30
  >>> num_edge = 11
  >>> infographmodular = InfoGraphModel(num_feat, num_edge, 64)
  >>> smiles = ['C1=CC=CC=C1', 'C1=CC=CC=C1C2=CC=CC=C2']
  >>> featurizer = MolGraphConvFeaturizer(use_edges=True)
  >>> graphs = BatchGraphData(featurizer.featurize(smiles))
  >>> graphs = graphs.numpy_to_torch(infographmodular.device)
  >>> model = infographmodular.model
  >>> global_enc, local_enc = model(graphs)
code: def init_emb(self):
      for m in self.modules():
          if isinstance(m, nn.Linear):
              torch.nn.init.xavier_uniform_(m.weight.data)
              if m.bias is not None:
                  m.bias.data.fill_(0.0)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn import GRU, Linear, ReLU, Sequential
  from typing import Iterable, List, Tuple, Optional, Dict, Literal
  from deepchem.metrics import to_one_hot
  import deepchem
  from deepchem.models.losses import SoftmaxCrossEntropy
  from deepchem.feat.graph_data import BatchGraphData
  from deepchem.models.losses import GlobalMutualInformationLoss, LocalMutualInformationLoss
  from deepchem.models.torch_models.layers import MultilayerPerceptron
  from deepchem.models.torch_models.modular import ModularTorchModel
label_desc: Use image node_id 2 for calling the InfoGraph obj's underlying member method code with example usage: obj.init_emb() without return types