-1
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,然后 fit 函数运行了所有 20 个 epoch,即使 val_loss 增加也没有停止。使用earlystopping的正确方法应该是什么?

4

1 回答 1

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 没有减少,训练将停止。

于 2021-06-26T19:46:26.607 回答