code: def forward(self, x, feats):
      emb = self.embeddings(x)
      emb = self.dropout(emb)
      feats = self.dropout_feat(feats)
  
      emb = torch.cat([emb, feats], 2)
  
      inp, _ = self.rnn(emb)
  
      if self.args["conv_res"] is not None:
          conv_input = emb.transpose(1, 2).contiguous()
          if not self.args.get("hier_conv_res", False):
              for l in self.conv_res:
                  inp = inp + l(conv_input).transpose(1, 2).contiguous()
          else:
              hid = []
              for l in self.conv_res:
                  hid += [l(conv_input)]
              hid = torch.cat(hid, 1)
              hid = F.relu(hid)
              hid = self.dropout(hid)
              inp = (
                  inp + self.conv_res2(hid).transpose(1, 2).contiguous()
              )
  
      inp = self.dropout(inp)
  
      tok0 = self.tok_clf(inp)
      sent0 = self.sent_clf(inp)
      if self.args["use_mwt"]:
          mwt0 = self.mwt_clf(inp)
  
      if self.args["hierarchical"]:
          if self.args["hier_invtemp"] > 0:
              inp2, _ = self.rnn2(
                  inp
                  * (
                      1
                      - self.toknoise(
                          torch.sigmoid(
                              -tok0 * self.args["hier_invtemp"]
                          )
                      )
                  )
              )
          else:
              inp2, _ = self.rnn2(inp)
  
          inp2 = self.dropout(inp2)
  
          tok0 = tok0 + self.tok_clf2(inp2)
          sent0 = sent0 + self.sent_clf2(inp2)
          if self.args["use_mwt"]:
              mwt0 = mwt0 + self.mwt_clf2(inp2)
  
      nontok = F.logsigmoid(-tok0)
      tok = F.logsigmoid(tok0)
      nonsent = F.logsigmoid(-sent0)
      sent = F.logsigmoid(sent0)
      if self.args["use_mwt"]:
          nonmwt = F.logsigmoid(-mwt0)
          mwt = F.logsigmoid(mwt0)
  
      if self.args["use_mwt"]:
          pred = torch.cat(
              [
                  nontok,
                  tok + nonsent + nonmwt,
                  tok + sent + nonmwt,
                  tok + nonsent + mwt,
                  tok + sent + mwt,
              ],
              2,
          )
      else:
          pred = torch.cat([nontok, tok + nonsent, tok + sent], 2)
  
      return pred
  
imports: import torch
  import torch.nn.functional
  import torch.nn
label_desc: Use image node_id 2 for calling the Tokenizer obj's underlying member method code with example usage: obj.forward(x, feats) and returns: pred