class_docstr: Transformer Encoder block with self attention mechanism.
  
  Args:
      n_layers (int): The number of sub-encoder-layers in the encoder.
          Defaults to 6.
      n_head (int): The number of heads in the multiheadattention models
          Defaults to 8.
      d_k (int): Total number of features in key. Defaults to 64.
      d_v (int): Total number of features in value. Defaults to 64.
      d_model (int): The number of expected features in the decoder inputs.
          Defaults to 512.
      d_inner (int): The dimension of the feedforward network model.
          Defaults to 256.
      dropout (float): Dropout rate for MHSA and FFN. Defaults to 0.1.
      init_cfg (dict or list[dict], optional): Initialization configs.
docstr: Generate mask for source sequence.
  
  Args:
      src_seq (torch.Tensor): Image sequence. Shape :math:`(N, T, C)`.
      valid_ratios (list[float]): The valid ratio of input image. For
          example, if the width of the original image is w1 and the width
          after pad is w2, then valid_ratio = w1/w2. source mask is used
          to cover the area of the pad region.
  
  Returns:
      Tensor or None: Source mask. Shape :math:`(N, T)`. The region of
      pad area are False, and the rest are True.
docstr_tok: ["Generate","mask","for","source","sequence",".","Args",":","src_seq","(","torch.Tensor",")",":","Image","sequence",".","Shape",":","math",":","`","(","N",",","T",",","C",")","`",".","valid_ratios","(","list","[","float","]",")",":","The","valid","ratio","of","input","image",".","For","example",",","if","the","width","of","the","original","image","is","w1","and","the","width","after","pad","is","w2",",","then","valid_ratio","=","w1\/w2",".","source","mask","is","used","to","cover","the","area","of","the","pad","region",".","Returns",":","Tensor","or","None",":","Source","mask",".","Shape",":","math",":","`","(","N",",","T",")","`",".","The","region","of","pad","area","are","False",",","and","the","rest","are","True","."]
code: def _get_source_mask(
      self, src_seq: torch.Tensor, valid_ratios: Sequence[float]
  ) -> torch.Tensor:
      """Generate mask for source sequence.
  
      Args:
          src_seq (torch.Tensor): Image sequence. Shape :math:`(N, T, C)`.
          valid_ratios (list[float]): The valid ratio of input image. For
              example, if the width of the original image is w1 and the width
              after pad is w2, then valid_ratio = w1/w2. source mask is used
              to cover the area of the pad region.
  
      Returns:
          Tensor or None: Source mask. Shape :math:`(N, T)`. The region of
          pad area are False, and the rest are True.
      """
  
      N, T, _ = src_seq.size()
      mask = None
      if len(valid_ratios) > 0:
          mask = src_seq.new_zeros((N, T), device=src_seq.device)
          for i, valid_ratio in enumerate(valid_ratios):
              valid_width = min(T, math.ceil(T * valid_ratio))
              mask[i, :valid_width] = 1
  
      return mask
  
file_path: mmocr/mmocr/models/textrecog/encoders/nrtr_encoder.py
imports: import math
  from typing import Dict, Optional, Sequence, Union
  import torch
  import torch.nn
  from mmengine.model import ModuleList
  from mmocr.models.common import TFEncoderLayer
  from mmocr.registry import MODELS
  from mmocr.structures import TextRecogDataSample
  from .base import BaseEncoder
label_desc: Use image node_id 2 for calling the NRTREncoder obj's underlying member method code with example usage: obj._get_source_mask(src_seq, valid_ratios) and returns: mask