2016-06-21 24 views
5

È possibile personalizzare il beamfinder nell'implementazione TensorFlow CTC dal lato Python? Vedo questa possibilità nel commento per il costruttore di classi C++ CTCBeamSearchDecoder ma mi chiedo come fornire questa funzionalità agli utenti Python?Utilizzo di indicatore di raggio personalizzato in TensorFlow CTC (modello lingua)

Il problema specifico che abbiamo riguarda il plug-in del modello di linguaggio in decodificatore vocale basato su CTC. Il modello linguistico può essere un sottoprogramma TensorFlow pre-addestrato, in grado di emettere probabilità per la regolazione del punteggio del fascio. Ma abbiamo bisogno di un modo per iniettare questo in beam scorer.

risposta

5

Attualmente non esiste alcuna API per Python per utilizzare il modello di lingua con un indicatore personalizzato. I contributi sono benvenuti, ma ci sono alcune difficoltà nel rendere questo possibile nell'API Python in quanto richiederebbe l'esecuzione del sottoprogramma TF LM in una sessione indipendente all'interno del decoder op, e quelli non si unirebbero bene insieme.

Il modo più semplice per farlo è in C++ e richiede l'estensione della classe BaseBeamScorer insieme a un BeamState (simile a ciò che è possibile vedere nei test) e inoltre eseguire CTCBeamSearchDecoder :: Decode in cima agli output dal grafico di tensorflow che normalmente andrebbe in ctc_beam_search_decoder op.

In questo modo, l'implementazione di BeamScorer potrebbe utilizzare qualsiasi modello di linguaggio che si ha a portata di mano e deve semplicemente restituire i punteggi appropriati quando si espande il raggio da uno stato a un altro.

+0

E 'teoricamente possibile utilizzare lambdas funzionale per il sottoprogramma LM, come se fosse fatto per cicli while? Quindi il decoder op non chiama la sessione indipendente? –