code: def forward(
      ctx,
      f,
      g,
      f_len,
      g_len,
      pack_output,
      relu,
      dropout,
      batch_offset,
      packed_batch,
      opt,
      fwd_tile_size,
      dropout_prob,
      mask_probe,
  ):
      h = transducer_joint_cuda.forward(
          f,
          g,
          f_len,
          g_len,
          batch_offset,
          packed_batch,
          opt,
          pack_output,
          relu,
          dropout,
          dropout_prob,
          fwd_tile_size,
      )
      masked = relu or dropout
      if masked:
          ctx.save_for_backward(h[1], f_len, g_len, batch_offset)
          if mask_probe is not None:
              mask_probe.append(h[1])
      else:
          ctx.save_for_backward(f_len, g_len, batch_offset)
  
      ctx.pack_output = pack_output
      ctx.masked = relu or dropout
      ctx.max_f_len = f.size(1)
      ctx.max_g_len = g.size(1)
      ctx.scale = (
          1 / (1 - dropout_prob) if dropout and dropout_prob != 1 else 1
      )
      return h[0]
  
file_path: apex/apex/contrib/transducer/transducer.py
imports: import torch
  import transducer_loss_cuda
  import transducer_joint_cuda
label_desc: Use image node_id 1 for calling the TransducerJointFunc obj's underlying member method code with example usage: obj.forward(ctx, f, g, f_len, g_len, pack_output, relu, dropout, batch_offset, packed_batch, opt, fwd_tile_size, dropout_prob, mask_probe) and returns: h