早期停止不适用于深度学习模型

时间:2021-06-26 19:35:23

标签: deep-learning conv-neural-network early-stopping

adam = tf.keras.optimizers.Adam(learning_rate = 0.0001, beta_1 = 0.9, beta_2 = 0.999, amsgrad = False)
my_model.compile(loss = "categorical_crossentropy", optimizer = adam , metrics = ['accuracy'])

earlystopping = EarlyStopping(monitor = 'val_loss', verbose = 1, patience = 20, restore_best_weights=True)

history = my_model.fit(train_gen, validation_data=val_gen, batch_size = 32, epochs = 20, callbacks=[earlystopping])

我应用了 Earlystopping,然后在所有 20 个 epoch 中运行拟合函数,即使 val_loss 增加也没有停止。 使用提前停止的正确方法应该是什么?

1 个答案:

答案 0 :(得分:0)

您的代码没有问题。您应该只减少 patience

中的 EarlyStopping 参数

您有 20 个 epoch,将耐心设置为 20 是个问题。

这是 Tensorflow 给出的定义:

patience: Number of epochs with no improvement after which training will be stopped.

我提议改成这样:

earlystopping = EarlyStopping(monitor = 'val_loss', verbose = 1, patience = 5, restore_best_weights=True)

现在如果 val_loss 连续 5 个 epoch 没有减少,则训练将停止。