2

Kerasを使用した文字レベルのテキストジェネレータに取り組んでいます。サンプル/チュートリアルには、私がまだ理解していないものがあります。Keras LSTMによるテキスト生成のトレーニング

トレーニングデータ(X)は、長さmaxlenの半冗長シーケンスに分割されています.yは、シーケンスの直後の文字です。

私はこれが効率的であることを理解しています。これは、トレーニングではmaxlen文字内の依存関係のみが実現されるためです。

私はそれがなぜ順番に行われるのか理解するのに苦労しています。 LSTM/RNNは、一度に1文字ずつ入力し、次に予測される文字を実際の次の文字と比較することによって訓練されたと思いました。これは、一度にmaxlen = 50文字を入力し、長さ50シーケンスを次の文字と比較することとは非常に異なっているようです。

実際にケラスはトレーニングシーケンスを分割し、「フードの下に」文字で入力しますか?

なぜそうでないのですか?

答えて

1

シーケンスの生成のために、反復レイヤーにフラグstateful=Trueを設定していると仮定しています。このオプションがなければ、私はそうではないと思われるものとは異なるシーケンス/文字を独立させています。このフラグがTrueに設定されている場合、両方のアプローチは同等であり、テキストをシーケンスに分割するのは、パフォーマンスの向上と単純さの理由によるものです。

+0

私のXがmaxlenの文字列で構成されていて、訓練データからXの各maxlenシーケンスに続くy文字で訓練されている場合は、これは、yが次の文字である個々の文字からなるXと同じになります。 トレーニングデータがアルファベットであり、MAXLEN 3(およびステップ= 1)X = ABC、BCD、CDE等 及びY = D、Eと ある場合、F等 Xは、B、Cを=対 およびy = b、c、dなど – user3692508

関連する問題