より大きなモデルをいくつか実行して、中間結果を試したいと思います。
したがって、私はチェックポイントを使用して、各エポックの後で最良のモデルを保存しようとします。
これは私のコードです:
model = Sequential()
model.add(LSTM(700, input_shape=(X_modified.shape[1], X_modified.shape[2]), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(700, return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(700))
model.add(Dropout(0.2))
model.add(Dense(Y_modified.shape[1], activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Save the checkpoint in the /output folder
filepath = "output/text-gen-best.hdf5"
# Keep only a single checkpoint, the best over test accuracy.
checkpoint = ModelCheckpoint(filepath,
monitor='val_acc',
verbose=1,
save_best_only=True,
mode='max')
model.fit(X_modified, Y_modified, epochs=100, batch_size=50, callbacks=[checkpoint])
しかし、私は最初のエポックの後でまだ警告を受けています:
/usr/local/lib/python3.6/site-packages/keras/callbacks.py:432: RuntimeWarning: Can save best model only with val_acc available, skipping.
'skipping.' % (self.monitor), RuntimeWarning)
たす metrics=['accuracy']
モデルへの他のSO質問(例 事前トレーニングされたVGG16モデルを使用しているときに重みを保存できません )解決策でしたが、ここでエラーはまだ残っています。
次のコードを使用してモデルをチェックポイントしようとしています
# Save the checkpoint in the /output folder
filepath = "output/text-gen-best.hdf5"
# Keep only a single checkpoint, the best over test accuracy.
checkpoint = ModelCheckpoint(filepath,
monitor='val_acc',
verbose=1,
save_best_only=True,
mode='max')
ModelCheckpoint
は引数monitor
を考慮して、モデルを保存するかどうかを決定します。コードではval_acc
です。したがって、val_acc
に増加がある場合は、重みを保存します。
今あなたのフィットコードで、
model.fit(X_modified, Y_modified, epochs=100, batch_size=50, callbacks=[checkpoint])
検証データが提供されていません。 ModelCheckpoint
には、チェックするmonitor
引数がないため、重みを保存できません。
val_acc
に基づいてチェックポイントを実行するには、このような検証データを提供する必要があります。
model.fit(X_modified, Y_modified, validation_data=(X_valid, y_valid), epochs=100, batch_size=50, callbacks=[checkpoint])
何らかの理由で検証データを使用したくない場合、チェックポイントを実装するには、ModelCheckpoint
を変更して、このようにacc
またはloss
に基づいて機能するようにする必要があります。
# Save the checkpoint in the /output folder
filepath = "output/text-gen-best.hdf5"
# Keep only a single checkpoint, the best over test accuracy.
checkpoint = ModelCheckpoint(filepath,
monitor='acc',
verbose=1,
save_best_only=True,
mode='max')
mode
min
を使用する場合は、monitor
をloss
に変更する必要があることに注意してください。
メトリックが欠落しているためではなく、検証データがないために欠落しています。 validation_data
パラメータを介してfit
に追加するか、validation_split
を使用します。