class_docstr: The nn.Module for InfoGraphStar. This class defines the forward pass of InfoGraphStar.
  
  Parameters
  ----------
  encoder: torch.nn.Module
      The encoder for InfoGraphStar.
  unsup_encoder: torch.nn.Module
      The unsupervised encoder for InfoGraph, of identical architecture to encoder.
  ff1: torch.nn.Module
      The first feedforward layer for InfoGraphStar.
  ff2: torch.nn.Module
      The second feedforward layer for InfoGraphStar.
  fc1: torch.nn.Module
      The first fully connected layer for InfoGraphStar.
  fc2: torch.nn.Module
      The second fully connected layer for InfoGraphStar.
  
  References
  ----------
  .. [1] F.-Y. Sun, J. Hoffmann, V. Verma, and J. Tang, “InfoGraph: Unsupervised and Semi-supervised Graph-Level Representation Learning via Mutual Maximization.” arXiv, Jan. 17, 2020. http://arxiv.org/abs/1908.01000
  
  
  Example
  -------
  >>> import torch
  >>> import numpy as np
  >>> from deepchem.models.torch_models.infograph import InfoGraphStarModel
  >>> from deepchem.feat.molecule_featurizers import MolGraphConvFeaturizer
  >>> from deepchem.feat.graph_data import BatchGraphData
  >>> num_feat = 30
  >>> num_edge = 11
  >>> infographmodular = InfoGraphStarModel(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)).numpy_to_torch(infographmodular.device)
  >>> model = infographmodular.model
  >>> output = model(graphs).cpu().detach().numpy()
code: def __init__(
      self,
      encoder,
      unsup_encoder,
      ff1,
      ff2,
      fc1,
      fc2,
      local_d,
      global_d,
      mode="regression",
      num_tasks=1,
      num_classes=2,
      init_emb=False,
  ):
      super().__init__()
      self.encoder = encoder
      self.unsup_encoder = unsup_encoder
      self.ff1 = ff1
      self.ff2 = ff2
      self.fc1 = fc1
      self.fc2 = fc2
      self.local_d = local_d
      self.global_d = global_d
      self.mode = mode
      self.num_tasks = num_tasks
      self.num_classes = num_classes
      if init_emb:
          self.init_emb()
  
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 1 to create a new InfoGraphStar object from inherited base classes: torch.nn with example: obj = InfoGraphStar(encoder, unsup_encoder, ff1, ff2, fc1, fc2, local_d, global_d, mode, num_tasks, num_classes, init_emb)