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 增加也没有停止。 使用提前停止的正确方法应该是什么?
答案 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 没有减少,则训练将停止。