2016-06-21 6 views
5

Ist es möglich, Beam Scorer in TensorFlow CTC-Implementierung von Python Seite anpassen? Ich sehe diese Möglichkeit im Kommentar für CTCBeamSearchDecoder C++ - Klassenkonstruktor, frage mich aber, wie man diese Funktionalität für Python-Benutzer bereitstellt?Verwenden von benutzerdefinierten Beam-Scorer in TensorFlow CTC (Sprachmodell)

Spezifisches Problem, das wir haben, ist das Stecken von Sprachmodell in CTC-basierten Sprachdecoder. Das Sprachmodell kann möglicherweise ein vortrainiertes TensorFlow-Unterdiagramm sein, das Wahrscheinlichkeiten für die Strahlwertanpassung ausgeben kann. Aber wir brauchen eine Möglichkeit, dies in den Strahl-Scorer zu injizieren.

Antwort

5

Es gibt derzeit keine API für Python, um ein Sprachmodell mit einem benutzerdefinierten Scorer zu verwenden. Beiträge sind willkommen, aber es gibt einige Schwierigkeiten, dies in der Python-API zu ermöglichen, da dies das Ausführen des TF LM-Untergraphen in einer unabhängigen Sitzung innerhalb des Decodierers erfordern würde, und diese würden nicht gut miteinander verschmelzen. Der einfachste Weg, dies zu tun, ist in C++ und erfordert die Erweiterung der BaseBeamScorer-Klasse zusammen mit einem BeamState (ähnlich dem, was in Tests zu sehen ist) und darüber hinaus CTCBeamSearchDecoder :: Decode über den Ausgaben des Tensorflow-Graphen würde normalerweise in den ctc_beam_search_decoder op gehen.

Dadurch kann Ihre BeamScorer-Implementierung jedes Sprachmodell verwenden, das Sie zur Hand haben, und lediglich die entsprechenden Werte zurückgeben, wenn der Strahl von einem Zustand in einen anderen wechselt.

+0

Ist es theoretisch möglich, Lambda-Funktionen für LM-Sub-Graphen zu verwenden, wie es für While-Schleifen gemacht wird? Also ruft der Decoder op nicht die unabhängige Sitzung auf? –

Verwandte Themen