Использование собственного счетчика лучей в TensorFlow CTC (языковая модель)

Можно ли настроить счетчик балок в реализации TensorFlow CTC со стороны Python? Я вижу эту возможность в комментарии для конструктора класса C++ CTCBeamSearchDecoder, но интересно, как предоставить эту функциональность пользователям Python?

Особая проблема, с которой мы сталкиваемся, - это включение языковой модели в речевой декодер на основе CTC. Языковая модель, возможно, может представлять собой предварительно обученный подграф TensorFlow, способный выводить вероятности для корректировки оценки луча. Но нам нужен способ ввести это в счетчик лучей.

1 ответ

Решение

В настоящее время нет API для Python для использования языковой модели с пользовательским счетчиком. Вклад приветствуется, но есть некоторые трудности в том, чтобы сделать это возможным в Python API, поскольку это потребовало бы запуска подграфа TF LM в независимом сеансе внутри операции декодера, и они не будут хорошо сочетаться друг с другом.

Самый простой способ сделать это в C++ и требует расширения класса BaseBeamScorer вместе с BeamState (аналогично тому, что можно увидеть в тестах) и дальнейшего запуска CTCBeamSearchDecoder::Decode поверх выходных данных графа тензорного потока, который обычно помещается в ctc_beam_search_decoder op.

Таким образом, ваша реализация BeamScorer может использовать любую имеющуюся у вас языковую модель и просто должна возвращать соответствующие баллы при расширении луча из одного состояния в другое.

Другие вопросы по тегам