1 回答
TA貢獻1830條經驗 獲得超9個贊
在實踐中,“提前停止”主要通過以下方式完成:(1) 訓練 X 個 epoch,(2)每次達到新的最佳性能時保存模型,(3) 選擇最佳模型?!白罴研阅堋倍x為實現最高(例如準確性)或最低(例如損失)驗證指標 - 下面的示例腳本:
best_val_loss = 999 # arbitrary init - should be high if 'best' is low, and vice versa
num_epochs = 5
epoch = 0
while epoch < num_epochs:
model.train_on_batch(x_train, y_train) # get x, y somewhere in the loop
val_loss = model.evaluate(x_val, y_val)
if val_loss < best_val_loss:
model.save(best_model_path) # OR model.save_weights()
print("Best model w/ val loss {} saved to {}".format(val_loss, best_model_path))
# ...
epoch += 1
請參閱保存 Keras 模型。如果你寧愿直接提前停止,那么定義一些指標 - 即條件 - 這將結束火車循環。例如,
while True:
loss = model.train_on_batch(...)
if loss < .02:
break
添加回答
舉報
