def METHOD_NAME(
    self,
    feat: torch.Tensor = None,
    out_enc: Optional[torch.Tensor] = None,
    data_samples: Optional[Sequence[TextRecogDataSample]] = None
) -> torch.Tensor:
    """
    Args:
        feat (Tensor): Feature from backbone. Unused in this decoder.
        out_enc (torch.Tensor, optional): Encoder output. Defaults to None.
        data_samples (list[TextRecogDataSample], optional): Batch of
            TextRecogDataSample, containing gt_text information. Defaults
            to None.
    Returns:
        Tensor: The raw logit tensor. Shape :math:`(N, T, C)` where
        :math:`C` is ``num_classes``.
    """
    B = out_enc.shape[0]
    state = torch.zeros(1, B, self.hidden_size).to(out_enc.device)
    padded_targets = [
        data_sample.gt_text.padded_indexes for data_sample in data_samples
    ]
    padded_targets = torch.stack(padded_targets, dim=0).to(out_enc.device)
    outputs = []
    for i in range(self.max_seq_len):
        prev_char = padded_targets[:, i].to(out_enc.device)
        output, state = self._attention(out_enc, state, prev_char)
        outputs.append(output)
    outputs = torch.cat([_.unsqueeze(1) for _ in outputs], 1)
    return outputs