code: def forward(self, q, a_batch):
      # bs, seq, Hidden*2
      q = self.lstm_q(q)
      # bs, 1, seq, hid*2
      q = autograd.reshape(q, (q.shape[0], 1, q.shape[1], q.shape[2]))
      # bs, 1, 1, hid*2
      q = self.q_pool(q)
      # bs, hid*2
      q = autograd.reshape(q, (q.shape[0], q.shape[3]))
  
      # 2bs, seq, Hidden*2
      a_batch = self.lstm_a(a_batch)
      # 2bs, 1, seq, hid*2
      a_batch = autograd.reshape(
          a_batch,
          (a_batch.shape[0], 1, a_batch.shape[1], a_batch.shape[2]),
      )
      # 2bs, 1, 1, hid*2
      a_batch = self.a_pool(a_batch)
      # 2bs, hid*2
      a_batch = autograd.reshape(
          a_batch, (a_batch.shape[0], a_batch.shape[3])
      )
  
      # 2*(bs, hid*2)
      a_pos, a_neg = autograd.split(
          a_batch, 0, [q.shape[0], q.shape[0]]
      )
  
      sim_pos = autograd.cossim(q, a_pos)
      sim_neg = autograd.cossim(q, a_neg)
      return sim_pos, sim_neg
  
file_path: singa/examples/qabot/qabot_model.py
imports: from singa import autograd, layer, model
label_desc: Use image node_id 2 for calling the QAModel_maxpooling obj's underlying member method code with example usage: obj.forward(q, a_batch) and returns: sim_pos,  sim_neg