class_docstr: Parameters:
      blank (int, optional): blank label. Default: 0.
      reduction (string, optional): Specifies the reduction to apply to the output:
          'none' | 'mean' | 'sum'. 'none': no reduction will be applied,
          'mean': the output losses will be divided by the target lengths and
          then the mean over the batch is taken. Default: 'mean'
      fastemit_lambda: Float scaling factor for FastEmit regularization. Refer to
          FastEmit: Low-latency Streaming ASR with Sequence-level
          Emission Regularization.
      clamp: Float value. When set to value >= 0.0, will clamp the
          gradient to [-clamp, clamp].
class_docstr_tok: ["Parameters",":","blank","(","int",",","optional",")",":","blank","label",".","Default",":","0.","reduction","(","string",",","optional",")",":","Specifies","the","reduction","to","apply","to","the","output",":","'none","'","|","'mean","'","|","'sum","'",".","'none","'",":","no","reduction","will","be","applied",",","'mean","'",":","the","output","losses","will","be","divided","by","the","target","lengths","and","then","the","mean","over","the","batch","is","taken",".","Default",":","'mean'","fastemit_lambda",":","Float","scaling","factor","for","FastEmit","regularization",".","Refer","to","FastEmit",":","Low-latency","Streaming","ASR","with","Sequence-level","Emission","Regularization",".","clamp",":","Float","value",".","When","set","to","value",">","=","0.0",",","will","clamp","the","gradient","to","[","-clamp",",","clamp","]","."]
docstr: log_probs: Tensor of (batch x seqLength x labelLength x outputDim)
      containing output from network
  labels: 2 dimensional Tensor containing all the targets of the
      batch with zero padded
  act_lens: Tensor of size (batch) containing size of each output
      sequence from the network
  label_lens: Tensor of (batch) containing label length of each example
docstr_tok: ["log_probs",":","Tensor","of","(","batch","x","seqLength","x","labelLength","x","outputDim",")","containing","output","from","network","labels",":","2","dimensional","Tensor","containing","all","the","targets","of","the","batch","with","zero","padded","act_lens",":","Tensor","of","size","(","batch",")","containing","size","of","each","output","sequence","from","the","network","label_lens",":","Tensor","of","(","batch",")","containing","label","length","of","each","example"]
code: def forward(self, acts, labels, act_lens, label_lens):
      """
      log_probs: Tensor of (batch x seqLength x labelLength x outputDim)
          containing output from network
      labels: 2 dimensional Tensor containing all the targets of the
          batch with zero padded
      act_lens: Tensor of size (batch) containing size of each output
          sequence from the network
      label_lens: Tensor of (batch) containing label length of each example
      """
  
      if not acts.is_cuda:
          # Since CPU requires log_softmax to be computed explicitly,
          # we need to perform grad clipping
          # *after* we have obtained the gradients of loss(logsoftmax()).
          # This is highly wasteful since it requires a copy of the entire
          # joint tensor which is expensive.
          # CUDA version is much more efficient since it performs an
          # inplace logsoftmax, and therefore can inplace clamp the gradient.
          if self.clamp > 0.0:
              acts = cpu_rnnt.LogSoftmaxGradModification.apply(
                  acts, self.clamp
              )
  
          # NOTE manually done log_softmax for CPU version,
          # log_softmax is computed within GPU version.
          acts = torch.nn.functional.log_softmax(acts, -1)
  
      return self.loss(
          acts,
          labels,
          act_lens,
          label_lens,
          self.blank,
          self.reduction,
          self.fastemit_lambda,
          self.clamp,
      )
  
imports: import torch
  from torch.autograd import Function
  from torch.nn import Module
  from espnet2.asr.transducer.rnnt_multi_blank import rnnt
  from espnet2.asr.transducer.rnnt_multi_blank.utils.cpu_utils import cpu_rnnt
label_desc: Use image node_id 2 for calling the RNNTLossNumba obj's underlying member method code with example usage: obj.forward(acts, labels, act_lens, label_lens) and returns: self