есть два решения, о которых я могу думать прямо сейчас:
- оба декодера TensorFlow предоставляют информацию о счете распознанного текста.ctc_greedy_decoder возвращает neg_sum_logits, который содержит оценку для каждого элемента пакета.То же самое верно для ctc_beam_search_decoder, который возвращает log_probabilities, который содержит оценки для каждого луча каждого элемента пакета.
- берут распознанный текст из любого из двух декодеров.Поместите в свой код другую функцию потери CTC и введите выходную матрицу RNN и распознанный текст в функцию потери.Тогда результатом будет вероятность (хорошо, вы должны отменить минус и журнал, но это должно быть легко) увидеть данный текст в матрице.
Решение (1) быстрее и проще в реализации, однако решение (2) является более точным.Но разница не должна быть слишком большой, если CRNN хорошо обучен, а ширина луча декодера поиска луча достаточно велика.
Посмотрите на код TF-CRNN в следующей строке - оценка равнауже возвращается как переменная log_prob: https://github.com/MaybeShewill-CV/CRNN_Tensorflow/blob/master/tools/train_shadownet.py#L62
А вот пример кода, который иллюстрирует решение (2): https://gist.github.com/githubharald/8b6f3d489fc014b0faccbae8542060dc