Keras:EarlyStopping 使用未经训练的网络的验证损失而不是 Inf

问题描述 投票:0回答:1

我已经使用“ModelCheckpoint”实现了提前停止。目标是选择训练最好的模型版本并返回所属的纪元号。

early_stopping = EarlyStopping(monitor='val_loss', patience=earlyStoppingEpochs, restore_best_weights=False) 
checkpoint_filepath = '/tmp/checkpoint.weights.h5'
checkpoint = ModelCheckpoint(filepath=checkpoint_filepath, save_weights_only=True, monitor="val_loss", mode="min", save_best_only=True, verbose=verbose)
history = model.fit(Train_Data, Train_Label, epochs=epochs, batch_size=batch_size, validation_data=(Val_Data, Val_Label), verbose=verbose, callbacks=[early_stopping, checkpoint])
hist = model.history.history['val_loss']
finalEpochs = np.argmin(hist) + 1 
model.load_weights(checkpoint_filepath)

一切正常。唯一仍然困扰我的一点是没有考虑未经训练的模型的验证损失。相反,初始损失设置为 Inf。 “Epoch 1:val_loss 从 **inf ** 改进到 2.35898,将模型保存到 /tmp/checkpoint.weights.h5”

然而,在我的应用程序中,即使是第一个训练周期也可能会导致验证损失恶化。然后它应该返回未经训练的模型作为最佳模型和理想的纪元数 0。

你知道是否可以调整行为,使其在 EarlyStopping 开始时不使用 inf,而是使用未经训练的模型的验证损失?

keras early-stopping
1个回答
0
投票

在 Keras 中,根据该文档,她:

https://keras.io/api/callbacks/early_stopping/

您实际上可以指定参数

start_from_epoch=0
(默认为0)。为了避免 -inf,也许您可以在几个时期(例如 2 个时期)后开始。

© www.soinside.com 2019 - 2024. All rights reserved.