3

私はmodel.fit()を使用して訓練されたモデルを持ち、model.save()を使用して物理ファイルに保存しました。今、保存されたモデルでトレーニングを再開する別のデータセットがあります。しかし、私はすべてのfit()呼び出しが新鮮なトレーニングと見なされていることがわかりました。つまり、以前に生成されて保存された重みを再初期化しています。keras.fit()はウェイトを再初期化します

私がfit()をエポック0で呼び出すと、重量リセットの問題が表示されません。しかし、私は間違いなくエポック> 0で試してみたいと思っています。

ここに何かが見つからないか、それともケラスの問題ですか?

ケラスバージョン:2.0.3

ありがとう。

+0

回避策は、バッチで電車を使用することができます – maz

+0

バッチで電車が私の最後のオプションの1つです。私はちょうどこれがfit()か何かの問題であるかどうかを知りたがっています – paachi

+0

あなたはバッチでどちらかの方法で列車を試すべきです。それがうまくいけば問題は収まる。それがあなたのデータセットまたは他のものでなければならない – maz

答えて

0

コールフィッティングは、ウェイトを再初期化すべきではありません。

あなたは新しいデータセットを使用していると書いてあります。このデータセットが異なる統計を持つと、ネットが簡単に精度を失うことがあります。これが当てはまる場合、最初の数エポックの間に初期の層については、非常に小さな学習率を試してみるか、trainable = Falseに設定してください。実際

+0

それは重量を再初期化します。私はコードを共有したいと思っていましたが、GANを作っているので少し複雑です。低学習率を設定するかtrainable = Falseを設定すると、再初期化問題の問題が解決されるのはなぜですか? – paachi

+0

https://keras.io/applications/のコードを見て、再トレーニングモデルの例をいくつか挙げることができます。 これは役に立たない場合は、train_on_batchを使用して、いくつかの例を訓練し、重みが再初期化されているのか、誤った方向に非常に素早く引っ張られたのかを判断することをお勧めします。後者の場合、学習率と訓練可能性に関する私の提案を使うことができます。 – pgrenholm

4

からfitを呼び出すの場合は以下の通りです:

  1. ウェイトがをリセットされません - あなたのモデルがfitを呼び出す前とまったく同じ重みを持っているでしょう - もちろん、最適化アルゴリズムのウォンまで」最初のバッチ中にそれらを変更しないでください。

  2. モデル状態がリセットされます - これはおそらくあなたが遭遇したシナリオです。すべてのオプティマイザ状態とモデル隠れ状態(特にrnnの場合)がリセットされます。これは変更された唯一のものです。これらの値を保持したい場合(特にオプティマイザの状態は多くの場合非常に重要です)、モデルの状態にまったく影響しないtrain_on_batchメソッドを使用できます。

関連する問題