class_docstr: VGGRNNEncoder class.
  
  Args:
      input_size: The number of expected features in the input
      bidirectional: If ``True`` becomes a bidirectional LSTM
      use_projection: Use projection layer or not
      num_layers: Number of recurrent layers
      hidden_size: The number of hidden features
      output_size: The number of output features
      dropout: dropout probability
class_docstr_tok: ["VGGRNNEncoder","class",".","Args",":","input_size",":","The","number","of","expected","features","in","the","input","bidirectional",":","If","``","True","``","becomes","a","bidirectional","LSTM","use_projection",":","Use","projection","layer","or","not","num_layers",":","Number","of","recurrent","layers","hidden_size",":","The","number","of","hidden","features","output_size",":","The","number","of","output","features","dropout",":","dropout","probability"]
code: def forward(
      self,
      xs_pad: torch.Tensor,
      ilens: torch.Tensor,
      prev_states: torch.Tensor = None,
  ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
      if prev_states is None:
          prev_states = [None] * len(self.enc)
      assert len(prev_states) == len(self.enc)
  
      current_states = []
      for module, prev_state in zip(self.enc, prev_states):
          xs_pad, ilens, states = module(
              xs_pad, ilens, prev_state=prev_state
          )
          current_states.append(states)
  
      if self.use_projection:
          xs_pad.masked_fill_(make_pad_mask(ilens, xs_pad, 1), 0.0)
      else:
          xs_pad = xs_pad.masked_fill(
              make_pad_mask(ilens, xs_pad, 1), 0.0
          )
      return xs_pad, ilens, current_states
  
file_path: espnet/espnet2/asr/encoder/vgg_rnn_encoder.py
imports: from typing import Tuple
  import numpy
  import torch
  from typeguard import check_argument_types
  from espnet2.asr.encoder.abs_encoder import AbsEncoder
  from espnet.nets.e2e_asr_common import get_vgg2l_odim
  from espnet.nets.pytorch_backend.nets_utils import make_pad_mask
  from espnet.nets.pytorch_backend.rnn.encoders import RNN, RNNP, VGG2L
label_desc: Use image node_id 3 for calling the VGGRNNEncoder obj's underlying member method code with example usage: obj.forward(xs_pad, ilens, prev_states) and returns: xs_pad,  ilens,  current_states