class_docstr: ASR model wrapper to perform alignment building.
  Functionality is limited to the components needed to build an alignment.
docstr: Multiplies probability of an element with index self.prob_suppress_index by self.prob_suppress_value times
  with stochasticity preservation of the log_probs tensor.
  
  Often used to suppress <blank> probability of the output of a CTC model.
  
  Example:
      For
          - log_probs = torch.log(torch.tensor([0.015, 0.085, 0.9]))
          - self.prob_suppress_index = -1
          - self.prob_suppress_value = 0.5
      the result of _apply_prob_suppress(log_probs) is
          - torch.log(torch.tensor([0.0825, 0.4675, 0.45]))
docstr_tok: ["Multiplies","probability","of","an","element","with","index","self.prob_suppress_index","by","self.prob_suppress_value","times","with","stochasticity","preservation","of","the","log_probs","tensor",".","Often","used","to","suppress","<","blank",">","probability","of","the","output","of","a","CTC","model",".","Example",":","For","-","log_probs","=","torch.log","(","torch.tensor","(","[","0.015",",","0.085",",","0.9","]",")",")","-","self.prob_suppress_index","=","-1","-","self.prob_suppress_value","=","0.5","the","result","of","_apply_prob_suppress","(","log_probs",")","is","-","torch.log","(","torch.tensor","(","[","0.0825",",","0.4675",",","0.45","]",")",")"]
code: def _apply_prob_suppress(
      self, log_probs: torch.Tensor
  ) -> torch.Tensor:
      """Multiplies probability of an element with index self.prob_suppress_index by self.prob_suppress_value times
      with stochasticity preservation of the log_probs tensor.
  
      Often used to suppress <blank> probability of the output of a CTC model.
  
      Example:
          For
              - log_probs = torch.log(torch.tensor([0.015, 0.085, 0.9]))
              - self.prob_suppress_index = -1
              - self.prob_suppress_value = 0.5
          the result of _apply_prob_suppress(log_probs) is
              - torch.log(torch.tensor([0.0825, 0.4675, 0.45]))
      """
      exp_probs = (log_probs).exp()
      x = exp_probs[:, :, self.prob_suppress_index]
      # we cannot do y=1-x because exp_probs can be not stochastic due to numerical limitations
      y = torch.cat(
          [
              exp_probs[:, :, : self.prob_suppress_index],
              exp_probs[:, :, self.prob_suppress_index + 1 :],
          ],
          2,
      ).sum(-1)
      b1 = torch.full(
          (exp_probs.shape[0], exp_probs.shape[1], 1),
          self.prob_suppress_value,
          device=log_probs.device,
      )
      b2 = (
          ((1 - self.prob_suppress_value * x) / y)
          .unsqueeze(2)
          .repeat(1, 1, exp_probs.shape[-1] - 1)
      )
      return (
          exp_probs
          * torch.cat(
              [
                  b2[:, :, : self.prob_suppress_index],
                  b1,
                  b2[:, :, self.prob_suppress_index :],
              ],
              2,
          )
      ).log()
  
imports: import copy
  import os
  from typing import Dict, List, Optional, Tuple, Union
  import numpy
  import torch
  from omegaconf import DictConfig, OmegaConf, open_dict
  from tqdm.auto import tqdm
  from nemo.collections.asr.data.audio_to_ctm_dataset import FrameCtmUnit
  from nemo.collections.asr.data.audio_to_text_dali import DALIOutputs
  from nemo.collections.asr.models.asr_model import ASRModel
  from nemo.utils import logging
label_desc: Use image node_id 6 for calling the AlignerWrapperModel obj's underlying member method code with example usage: obj._apply_prob_suppress(log_probs) and returns: unknown