class_docstr: Base class for encoder decoder CTC-based models.
class_docstr_tok: ["Base","class","for","encoder","decoder","CTC-based","models","."]
docstr: Forward pass of the model.
  
  Args:
      input_video_signal: Tensor that represents a batch of video signals,
          of shape [B, T, H, W, C]. T here represents timesteps, H height, W width and C channels
      input_video_signal_length: Vector of length B, that contains the individual lengths of the video
          sequences.
  
  Returns:
      A tuple of 3 elements -
      1) The log probabilities tensor of shape [B, T, D].
      2) The lengths of the acoustic sequence after propagation through the encoder, of shape [B].
      3) The greedy token predictions of the model of shape [B, T] (via argmax)
docstr_tok: ["Forward","pass","of","the","model",".","Args",":","input_video_signal",":","Tensor","that","represents","a","batch","of","video","signals",",","of","shape","[","B",",","T",",","H",",","W",",","C","]",".","T","here","represents","timesteps",",","H","height",",","W","width","and","C","channels","input_video_signal_length",":","Vector","of","length","B",",","that","contains","the","individual","lengths","of","the","video","sequences",".","Returns",":","A","tuple","of","3","elements","-","1",")","The","log","probabilities","tensor","of","shape","[","B",",","T",",","D","]",".","2",")","The","lengths","of","the","acoustic","sequence","after","propagation","through","the","encoder",",","of","shape","[","B","]",".","3",")","The","greedy","token","predictions","of","the","model","of","shape","[","B",",","T","]","(","via","argmax",")"]
code: def forward(
      self, input_video_signal=None, input_video_signal_length=None
  ):
      """
      Forward pass of the model.
  
      Args:
          input_video_signal: Tensor that represents a batch of video signals,
              of shape [B, T, H, W, C]. T here represents timesteps, H height, W width and C channels
          input_video_signal_length: Vector of length B, that contains the individual lengths of the video
              sequences.
  
      Returns:
          A tuple of 3 elements -
          1) The log probabilities tensor of shape [B, T, D].
          2) The lengths of the acoustic sequence after propagation through the encoder, of shape [B].
          3) The greedy token predictions of the model of shape [B, T] (via argmax)
      """
  
      # Preprocessing
      (
          processed_video_signal,
          processed_video_signal_length,
      ) = self.video_preprocessor(
          input_signal=input_video_signal,
          length=input_video_signal_length,
      )
  
      # Augmentation
      processed_video_signal = self.video_augmentation(
          input_signal=processed_video_signal,
          length=processed_video_signal_length,
      )
  
      # Front-end Networks
      (
          processed_video_signal,
          processed_video_signal_length,
      ) = self.video_front_end(
          input_signal=processed_video_signal,
          length=processed_video_signal_length,
      )
  
      # Back-end Networks
      encoded, encoded_len = self.encoder(
          audio_signal=processed_video_signal,
          length=processed_video_signal_length,
      )
  
      log_probs = self.decoder(encoder_output=encoded)
      greedy_predictions = log_probs.argmax(dim=-1, keepdim=False)
  
      return (
          log_probs,
          encoded_len,
          greedy_predictions,
      )
  
imports: import copy
  import json
  import os
  import tempfile
  from math import ceil
  from typing import Dict, List, Optional, Union
  import torch
  from omegaconf import DictConfig, OmegaConf, open_dict
  from pytorch_lightning import Trainer
  from tqdm.auto import tqdm
  from nemo.collections.asr.data import audio_to_text_dataset
  from nemo.collections.asr.losses.ctc import CTCLoss
  from nemo.collections.asr.metrics.wer import WER
  from nemo.collections.asr.models.asr_model import ASRModel, ExportableEncDecModel
  from nemo.collections.asr.parts.mixins import ASRModuleMixin, InterCTCMixin
  from nemo.collections.asr.parts.submodules.ctc_decoding import CTCDecoding, CTCDecodingConfig
  from nemo.collections.asr.parts.utils.audio_utils import ChannelSelectorType
  from nemo.collections.multimodal.speech_cv.data import video_to_text_dataset
  from nemo.core.classes.common import PretrainedModelInfo, typecheck
  from nemo.core.classes.mixins import AccessMixin
  from nemo.core.neural_types import LabelsType, LengthsType, LogprobsType, NeuralType, VideoSignal
  from nemo.utils import logging
label_desc: Use image node_id 11 for calling the VisualEncDecCTCModel obj's underlying member method code with example usage: obj.forward(input_video_signal, input_video_signal_length) and returns: log_probs,  encoded_len,  greedy_predictions