モデルには、最初のレイヤーとしてLSTMがあります。Keraでは、model.predictの呼び出しでLSTMの状態がリセットされるのはいつですか?
model.predictを呼び出すあなたはいくつかのサンプルを渡し言う:
>sam = np.array([ [[.5, .6, .3]], [[.6, .6, .3]], [[.5, .6, .3]] ])
>model.predict(sam)
array([[ 0.23589483],
[ 0.2327884 ],
[ 0.23589483]])
我々はマッピング見る上:[[0.5、0.6、0.3]] - 1つの要素の> 0.23589483などは(シーケンス
モデルのinput_lengthは1で、input_dimは3です。最初と最後は同じで出力は同じです(0.23589483)。だから私の前提は、Kerasがサンプル(この場合は1-3Dベクトルのシーケンス)を処理した後、モデルのメモリをリセットするということです。つまり、各シーケンスは基本的に独立しています。このビューに間違った情報や誤解を招く情報はありますか?
input_length 3とinput_dim 1で別の例を考えてみましょう。今回は、シーケンス内の値を切り替えて、別の結果を参照します(2番目のリストと最後のリストを比較してください)。したがってKerasはシーケンスを処理するのでメモリは変化しますが、処理が完了するとメモリがリセットされます(最初と2番目のシーケンスは同じ結果を持ちます)。
sam = np.array([ [[.1],[.1],[.9]], [[.1],[.9],[.1]], [[.1],[.1],[.9]] ])
model.predict(sam)
array([[ 0.69906837],
[ 0.1454899 ],
[ 0.69906837]])
我々はマッピングを参照の上、[を[0.1]、[1]、[9]。。] - > 0.69906837など(実数への3つの要素のシーケンス)
[OK]を、私は重みが変更されません同意するものとします。しかし、LTSMのメモリ/状態はどうですか?それは「体重」とはみなされませんよね?私は実際にLTSM状態をダンプするかどうか疑問に思います。 – yalis
OK私はあなたが意味するものを得て、私の答えを編集しました。私はそれが質問に答えることを望む。 –
@yalis 'stateful = True'を使って、あなたが望む効果を見ることができましたか?私は必要に応じて実際の例を提供することができます。 –