私はKerasの新しいユーザーです。 Kerasを使用したトレーニング手順について質問があります。KerasのModelCheckpointを使用してモデルをトレーニングする方法
私のサーバーの時間制限のため(各ジョブは24時間以内に実行することができません)、複数の10エポック期間を使用してモデルをトレーニングする必要があります。
トレーニングの第1期間では、10エポック後に、モデルのモデルチェッカポイントを使用して最良のモデルの重みが格納されます。
conf = dict()
conf['nb_epoch'] = 10
callbacks = [
ModelCheckpoint(filepath='/1st_{epoch:d}_{val_loss:.5f}.hdf5',
monitor='val_loss', save_best_only=True,
save_weights_only=False, verbose=0)
]
「1st_10_1.00000.hdf5」というモデルがベストだとします。次に、10個のエポックを使って自分のモデルを訓練し、次のようにベストモデルの重みを格納します。
model.load_weights('1st_10_1.00000.hdf5')
model.compile(...)
callbacks = [
ModelCheckpoint(filepath='/2nd_{epoch:d}_{val_loss:.5f}.hdf5',
monitor='val_loss', save_best_only=True,
save_weights_only=False, verbose=0)
]
しかし、私には問題があります。 2回目のトレーニングの第1回は1.20000のval_lossを与え、スクリプトは '2nd_1_1.20000.hdf5'というモデルを生成します。明らかに、新しいval_lossは、最初のトレーニングの最高val_loss(1.00000)よりも大きい。そして、次の訓練の次のエポックは、 '1st_10_1.00000.hdf5'ではなく '2nd_1_1.20000.hdf5'というモデルに基づいて訓練されているようです。
'2nd_1_1.20000.hdf5'
'2nd_1_2.15000.hdf5'
'2nd_1_3.10000.hdf5'
'2nd_1_4.05000.hdf5'
...
最初のトレーニング期間の方が良い結果を使用していないと思います。誰でも私にそれを修正する方法を教えてもらえますか、それとも前のトレーニング期間のベストモデルを使うべきかをプログラムに伝える方法ですか?事前に多くの感謝!
誰でも私を助けることができますか?どうもありがとう! –