2017-03-13 5 views
3

私はシーケンシャルなデータを持っており、Kerasのxyと予測するLSTMモデルを宣言しました。だから私がmodel.predict(x1)model.predict(x2)を呼び出す場合、model.reset_statesを2つのpredict()の間で明示的に呼び出すのは正しいですか? model.reset_statesは、重みの重みではなく入力の履歴をクリアしていますか?Kerasでmodel.reset_states()を使用するには?

# data1 
x1 = [2,4,2,1,4] 
y1 = [1,2,3,2,1] 

# dat2 
x2 = [5,3,2,4,5] 
y2 = [5,3,2,3,2] 

実際のコードでは、model.evaluate()を使用します。 evaluate()では、reset_statesは各データサンプルに対して暗黙的に呼び出されますか?

model.evaluate(dataX, dataY) 

答えて

4

reset_statesは、ネットワークの非表示状態のみを消去します。あなたのネットワークにオプションstateful=Trueが設定されているかどうかによって、この機能の動作が異なる場合があります。設定されていない場合は、ネットワーク内のすべてのバッチ処理後にすべての状態が自動的にリセットされます(例:fitpredictおよびevaluateも呼び出した後)。そうでない場合は、連続したモデル呼び出しを独立させたい場合はいつでもreset_statesに電話する必要があります。

+0

私はそれを得ました。ステートフルオプション(デフォルト= false)を設定しないと、reset_statesを呼び出す必要はありません。ステートフル= Trueを使用する必要があるケースを教えてください。 – jef

+1

はい、そうです。 'stateful = True'は通常連続したバッチを連続入力として扱いたいときに使われます。この場合、モデルは同じバッチと同じ連続バッチを処理しています。 –

+0

ありがとうございます。私はあなたの答えを受け入れる。 – jef

関連する問題