class_docstr: Decoder for CRNN.
  
  Args:
      in_channels (int): Number of input channels.
      dictionary (dict or :obj:`Dictionary`): The config for `Dictionary` or
          the instance of `Dictionary`.
      rnn_flag (bool): Use RNN or CNN as the decoder. Defaults to False.
      module_loss (dict, optional): Config to build module_loss. Defaults
          to None.
      postprocessor (dict, optional): Config to build postprocessor.
          Defaults to None.
      init_cfg (dict or list[dict], optional): Initialization configs.
          Defaults to None.
docstr: Args:
      feat (Tensor): A Tensor of shape :math:`(N, C, 1, W)`.
      out_enc (torch.Tensor, optional): Encoder output. Defaults to None.
      data_samples (list[TextRecogDataSample]): Batch of
          TextRecogDataSample, containing ``gt_text`` information.
          Defaults to None.
  
  Returns:
      Tensor: Character probabilities. of shape
      :math:`(N, self.max_seq_len, C)` where :math:`C` is
      ``num_classes``.
docstr_tok: ["Args",":","feat","(","Tensor",")",":","A","Tensor","of","shape",":","math",":","`","(","N",",","C",",","1",",","W",")","`",".","out_enc","(","torch.Tensor",",","optional",")",":","Encoder","output",".","Defaults","to","None",".","data_samples","(","list","[","TextRecogDataSample","]",")",":","Batch","of","TextRecogDataSample",",","containing","``","gt_text","``","information",".","Defaults","to","None",".","Returns",":","Tensor",":","Character","probabilities",".","of","shape",":","math",":","`","(","N",",","self.max_seq_len",",","C",")","`","where",":","math",":","`","C","`","is","``","num_classes","``","."]
code: def forward_test(
      self,
      feat: Optional[torch.Tensor] = None,
      out_enc: Optional[torch.Tensor] = None,
      data_samples: Optional[Sequence[TextRecogDataSample]] = None,
  ) -> torch.Tensor:
      """
      Args:
          feat (Tensor): A Tensor of shape :math:`(N, C, 1, W)`.
          out_enc (torch.Tensor, optional): Encoder output. Defaults to None.
          data_samples (list[TextRecogDataSample]): Batch of
              TextRecogDataSample, containing ``gt_text`` information.
              Defaults to None.
  
      Returns:
          Tensor: Character probabilities. of shape
          :math:`(N, self.max_seq_len, C)` where :math:`C` is
          ``num_classes``.
      """
      return self.softmax(
          self.forward_train(feat, out_enc, data_samples)
      )
  
file_path: mmocr/mmocr/models/textrecog/decoders/crnn_decoder.py
imports: from typing import Dict, Optional, Sequence, Union
  import torch
  import torch.nn
  from mmengine.model import Sequential
  from mmocr.models.common.dictionary import Dictionary
  from mmocr.models.textrecog.layers import BidirectionalLSTM
  from mmocr.registry import MODELS
  from mmocr.structures import TextRecogDataSample
  from .base import BaseDecoder
label_desc: Use image node_id 3 for calling the CRNNDecoder obj's underlying member method code with example usage: obj.forward_test(feat, out_enc, data_samples) and returns: self