class_docstr: Parameters:
      blank (int): standard blank label.
      big_blank_durations: list of durations for multi-blank transducer, e.g.
          [2, 4, 8].
      sigma: hyper-parameter for logit under-normalization method for training
          multi-blank transducers. Recommended value 0.05.
      Refer to https://arxiv.org/pdf/2211.03541 for detailed explanations for
          the above parameters;
      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",")",":","standard","blank","label",".","big_blank_durations",":","list","of","durations","for","multi-blank","transducer",",","e.g",".","[","2",",","4",",","8","]",".","sigma",":","hyper-parameter","for","logit","under-normalization","method","for","training","multi-blank","transducers",".","Recommended","value","0.05",".","Refer","to","https",":","\/\/arxiv.org\/pdf\/2211.03541","for","detailed","explanations","for","the","above","parameters",";","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.big_blank_durations,
          self.reduction,
          self.fastemit_lambda,
          self.clamp,
          self.sigma,
      )
  
imports: import torch
  from torch.autograd import Function
  from torch.nn import Module
  from nemo.collections.asr.parts.numba.rnnt_loss import rnnt
  from nemo.collections.asr.parts.numba.rnnt_loss.utils.cpu_utils import cpu_rnnt
label_desc: Use image node_id 2 for calling the MultiblankRNNTLossNumba obj's underlying member method code with example usage: obj.forward(acts, labels, act_lens, label_lens) and returns: self