Kerasでモデルをトレーニングするときに次のコードを使用します
from keras.callbacks import EarlyStopping
model = Sequential()
model.add(Dense(100, activation='relu', input_shape = input_shape))
model.add(Dense(1))
model_2.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
model.fit(X, y, epochs=15, validation_split=0.4, callbacks=[early_stopping_monitor], verbose=False)
model.predict(X_test)
しかし最近、トレーニング中のデータが「high val_loss vs epochs」グラフに多くのピークを与えるため、最高のトレーニング済みモデルを保存したかったので、モデルから可能な限り最高のものを使用したいと思います。
それを支援する方法や機能はありますか?
EarlyStopping および ModelCheckpoint は、Kerasのドキュメントから必要なものです。
ModelCheckpointでsave_best_only=True
を設定する必要があります。他の調整が必要な場合は、簡単です。
さらに役立つように、使用法 ここではKaggleで を確認できます。
上記のKaggleのサンプルリンクが利用できない場合に、ここにコードを追加します。
model = getModel()
model.summary()
batch_size = 32
earlyStopping = EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='min')
mcp_save = ModelCheckpoint('.mdl_wts.hdf5', save_best_only=True, monitor='val_loss', mode='min')
reduce_lr_loss = ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=7, verbose=1, epsilon=1e-4, mode='min')
model.fit(Xtr_more, Ytr_more, batch_size=batch_size, epochs=50, verbose=0, callbacks=[earlyStopping, mcp_save, reduce_lr_loss], validation_split=0.25)
model_2.compile
はタイプミスだったと思います。これは、最適なモデルw.r.tをval_lossesに保存する場合に役立ちます-
checkpoint = ModelCheckpoint('model-{Epoch:03d}-{acc:03f}-{val_acc:03f}.h5', verbose=1, monitor='val_loss',save_best_only=True, mode='auto')
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
model.fit(X, y, epochs=15, validation_split=0.4, callbacks=[checkpoint], verbose=False)