我正在訓練一個具有恒定學習率和 epoch = 45 的神經網路。我觀察到準確度在 35 號時期最高,然后它會左右擺動并降低。我認為我需要降低第 35 個時期的學習率。在所有時期完成后,我有沒有機會從第 35 個時期再次訓練模型?我的代碼如下所示 -
model_nn = keras.Sequential()
model_nn.add(Dense(352, input_dim=28, activation='relu',kernel_regularizer=l2(0.001)))
model_nn.add(Dense(384, activation='relu',kernel_regularizer=l2(0.001)))
model_nn.add(Dense(288, activation='relu',kernel_regularizer=l2(0.001)))
model_nn.add(Dense(448, activation='relu',kernel_regularizer=l2(0.001)))
model_nn.add(Dense(320, activation='relu',kernel_regularizer=l2(0.001)))
model_nn.add(Dense(1, activation='sigmoid'))
auc_score = tf.keras.metrics.AUC()
model_nn.compile(loss='binary_crossentropy', optimizer=keras.optimizers.Adam(learning_rate=0.0001), metrics=['accuracy',auc_score])
history=model_nn.fit(X_train1, y_train1,validation_data=(X_test,y_test),epochs=45, batch_size=250, verbose = 1 )
_, accuracy = model_nn.evaluate(X_test,y_test)
model_nn.save('mymodel.h5') ##Saving model weights
uj5u.com熱心網友回復:
你可以做兩件有用的事情:
- 使用帶有引數的ModelCheckpoint回呼。
save_best_only=True它僅在模型被認為是“最佳”時保存,并且不會覆寫根據監控數量的最新最佳模型。 - 使用ReduceLROnPlateau和EarlyStopping回呼。
ReduceLROnPlateau當驗證子集的度量停止改進時,將降低學習率。EarlyStopping當監控的指標完全停止改進時,將停止訓練。
簡而言之,ReduceLROnPlateau幫助我們找到全域最小值,EarlyStopping處理 epoch 的數量,ModelCheckpoint并將保存最佳模型。
代碼可能如下所示:
early_stoping = EarlyStopping(patience=5, min_delta=0.0001)
reduce_lr_loss = ReduceLROnPlateau(patience=2, verbose=1, min_delta=0.0001, factor=0.65)
model_checkpoint = ModelCheckpoint(save_best_only=True)
history = model_nn.fit(X_train1, y_train1,
validation_data=(X_test,y_test),
epochs=100,
batch_size=250,
verbose=1,
callbacks=[early_stoping, reduce_lr_loss, model_checkpoint])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/432298.html
