/ / Używanie niestandardowego klasyfikatora wiązki w TensorFlow CTC (model języka) - tensorflow, model języka

Używanie niestandardowego klasyfikatora wiązki w TensorFlow CTC (model języka) - tensorflow, model języka

Czy możliwe jest dostosowanie strzelca belki?Implementacja TensorFlow CTC od strony Pythona? Widzę tę możliwość w komentarzu do konstruktora klasy CTCBeamSearchDecoder C ++, ale zastanawiam się, jak zapewnić tę funkcjonalność dla użytkowników Pythona?

Specyficznym problemem, który mamy, jest podłączeniemodel języka do dekodera mowy opartego na CTC. Modelem językowym może być wstępnie wyszkolony pod-wykres TensorFlow, zdolny do wyprowadzania prawdopodobieństw w celu dostosowania wyniku wiązki. Ale potrzebujemy sposobu, aby wprowadzić go do strzelca wiązki.

Odpowiedzi:

5 dla odpowiedzi № 1

W tej chwili nie ma API do Pythonamodel językowy z niestandardowym strzelcem. Składki są mile widziane, ale istnieje pewne trudności w umożliwieniu tego w interfejsie API Pythona, ponieważ wymagałoby to uruchomienia pod-wykresu TF LM w niezależnej sesji wewnątrz dekodera op, a te nie byłyby ładnie ze sobą połączone.

Najłatwiej to zrobić w C ++ iwymaga rozszerzenia klasy BaseBeamScorer wraz z BeamState (podobnej do tego, co można zobaczyć w testach) i dalszego uruchomienia CTCBeamSearchDecoder :: Decode na wyjściach z wykresu tensorflow, który normalnie byłby w ctc_beam_search_decoder op.

W ten sposób Twoja implementacja BeamScorer może korzystać z dowolnego modelu języka, który masz pod ręką i po prostu musi zwracać odpowiednie wyniki przy rozszerzaniu wiązki z jednego stanu do drugiego.