2017-01-23 8 views
0

LSTMを理解して実装しようとしています。彼らはシーケンス長Tを定義する必要があり、トレーニングはバッチで実行されることを理解しています。そこで私たちはネットワークに長さTのシーケンスをいくつか与えました。LSTMは前の状態を入力として必要としました。私が理解するように、LSTMはゼロに初期化されています。私の質問は、すべてのシーケンスの後で状態がゼロにリセットされているということですか?たとえば、私はシーケンス1を持っている、状態ベクトルはこのシーケンスで前方に運ばれ、私は次のシーケンスのためにそれをゼロに置く?それとも、それは次のシーケンス2に運ばれていますか?もしそうなら、それは無関係な配列に対してどのように行われますか?たとえば、私は2つの異なるテキストからのサンプルを持っており、テキスト1からテキスト2に状態を運ぶのは意味がありません。これは実際にどのように扱われますか? テスト時間については、状態ベクトルはゼロとして初期化され、シーケンス全体に対して実行されるか、各サブシーケンスの後にリセットされますか?トレーニングとテスト中にLSTMで状態がリセットされる

注:Tensorflowにもこのタグを付けています。これは私が使用しているフレームワークなので、おそらくそこの人も私を助けることができます。

答えて

0

Tensorflowでは、すべてのシーケンスの開始状態が、バッチ内のすべての要素とバッチ間で0にリセットされていることが95%です。 (5%は "決して言うことはありません" ルール:)

EDITので:

私はおそらくより手の込んだ必要があります。 Tensorflowがどのように機能するかは、最初にグラフを作成してからデータをプッシュします。あなたが作成した反復グラフを見ると、その頭(最初の状態)がゼロに接続されていることがわかります。つまり、グラフを押すたびに(例えばsess.run()によって)データがプッシュされます。ゼロジェネレータから新しいゼロを取得します。したがって、忘れた場合、以前の実行から古い状態になります。

関連する問題