code: def forward(self, X, training=False):
      for i, W in enumerate(self.W_list):
          X = X.mm(W)
          X += self.b_list[i].unsqueeze(0).expand_as(X)
          X = torch.nn.ReLU()(X)
          if training:
              X = torch.nn.Dropout(p=self.dropouts[i])(X)
      outputs = []
      for i, W in enumerate(self.task_W_list):
          output = X.mm(W)
          output += self.task_b_list[i].unsqueeze(0).expand_as(output)
          if not training:
              output = torch.nn.functional.softmax(output)
          outputs.append(output)
      return outputs
  
file_path: deepchem/contrib/torch/torch_multitask_classification.py
imports: import torch
  import numpy
  from deepchem.metrics import from_one_hot
  from torch_model import TorchMultitaskModel
label_desc: Use image node_id 3 for calling the TorchMultitaskClassification obj's underlying member method code with example usage: obj.forward(X, training) and returns: outputs