如何看待早期停留在喀喇斯而失去的最佳纪元?

2024-03-29 14:16:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经设法在我的Keras模型中实现了提前停止,但我不确定如何看待最佳时代的丧失。你知道吗

es = EarlyStopping(monitor='val_out_soft_loss', 
            mode='min',
            restore_best_weights=True, 
            verbose=2, 
            patience=10)

model.fit(tr_x,
          tr_y,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          callbacks=[es],
          validation_data=(val_x, val_y))
loss = model.history.history["val_out_soft_loss"][-1]
return model, loss

我定义损失分数的方式,意味着返回的分数来自最后一个纪元,而不是最好的纪元。你知道吗

示例:

from sklearn.model_selection import train_test_split, KFold
losses = []
models = []
for k in range(2):
    kfold = KFold(5, random_state = 42 + k, shuffle = True)
    for k_fold, (tr_inds, val_inds) in enumerate(kfold.split(train_y)):
        print("-----------")
        print("-----------")
        model, loss = get_model(64, 100)
        models.append(model)
        print(k_fold, loss)
        losses.append(loss)
print("-------")
print(losses)
print(np.mean(losses))

Epoch 23/100
18536/18536 [==============================] - 7s 362us/step - loss: 0.0116 - out_soft_loss: 0.0112 - out_reg_loss: 0.0393 - val_loss: 0.0131 - val_out_soft_loss: 0.0127 - val_out_reg_loss: 0.0381

Epoch 24/100
18536/18536 [==============================] - 7s 356us/step - loss: 0.0116 - out_soft_loss: 0.0112 - out_reg_loss: 0.0388 - val_loss: 0.0132 - val_out_soft_loss: 0.0127 - val_out_reg_loss: 0.0403

Restoring model weights from the end of the best epoch
Epoch 00024: early stopping
0 0.012735568918287754

所以在这个例子中,我想看到在Epoch 00014处的损失(即0.0124)。你知道吗

我还有一个单独的问题:如何设置val\ U out\ U soft\ U loss分数的小数位?你知道吗


Tags: truemodelesvalregout分数tr
1条回答
网友
1楼 · 发布于 2024-03-29 14:16:25

将Keras中的fit()调用赋给一个变量,这样您就可以跟踪各个时期的度量。你知道吗

history = model.fit(tr_x, ...

它将返回一个字典,按如下方式访问:

loss_hist = history.history['loss']

然后得到min()max(),或者你想要的任何东西。你知道吗

np.min(loss_hist)

相关问题 更多 >