Tensorflow 実装、すべてのスクリプトを含む Kaldi に焦点を当てた実装など、既存の実装が多数あります。最初にそれらを確認することをお勧めします。
Theano は低レベルすぎるため、チュートリアルで説明されているように、代わりにkerasを試すことができます。チュートリアルを「そのまま」実行して、状況を理解することができます。
次に、データセットを準備する必要があります。データを一連のデータ フレームに変換する必要があり、一連のデータ フレームごとに出力ラベルを割り当てる必要があります。
Keras は、シーケンスを返すレイヤーと単純な値を返すレイヤーの 2 種類の RNN をサポートします。return_sequences=True
使用するコードで、または両方を試すことができます。return_sequences=False
シーケンスでトレーニングするには、認識したい単語のラベルを割り当てることができる最後のフレームを除くすべてのフレームにダミー ラベルを割り当てることができます。入力ラベルと出力ラベルを配列に配置する必要があります。したがって、次のようになります。
X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]
Y = [[0,0,...,1], [0,0,....,2]]
X では、すべての要素が 13 個の float のベクトルです。Y では、すべての要素は単なる数字です。中間フレームの場合は 0、最終フレームの場合はワード ID です。
ラベルだけでトレーニングするには、入力ラベルと出力ラベルを配列に配置する必要があり、出力配列はより簡単です。したがって、データは次のようになります。
X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]
Y = [[0,0,1], [0,1,0]]
出力はベクトル化 (np_utils.to_categorical) され、単なる数値ではなくベクトルに変換されることに注意してください。
次に、ネットワーク アーキテクチャを作成します。入力には 13 個の浮動小数点数、出力にはベクトルを使用できます。中間には、完全に接続された 1 つの層があり、その後に 1 つの lstm 層が続く場合があります。大きすぎるレイヤーを使用しないでください。小さなレイヤーから始めてください。
次に、このデータセットをフィードしmodel.fit
て、モデルをトレーニングします。トレーニング後にホールドアウト セットのモデル品質を推定できます。
例が 20 個しかないため、収束に問題があります。LSTM をトレーニングするには、より多くの例、できれば数千の例が必要です。非常に小さなモデルしか使用できません。