gpt4 book ai didi

python - 尝试从训练模型中获取 val_loss

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:00 26 4
gpt4 key购买 nike

我在下面的类(class)中尝试获取包含每次训练的损失和验证损失的元组列表

class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.losses = []

def on_batch_end(self, batch, logs={}):
self.losses.append((logs.get('loss'), logs.get('val_loss')))

我之前初始化了LossHistory对象

history = LossHistory()

然后我通过以下方式将其传递给模型上的 fit 方法

regressor.fit(X_train, y_train, batch_size=32, epochs=200, validation_split = 0.2, callbacks = [history])

问题是当我尝试获取 history.losses[0][1] 时,返回值是 noneType 并且不应该是

我不知道我在这里做错了什么,我已经被困在这个问题上有一段时间了。

最佳答案

我的回答迟了,但可能对其他人有帮助。

on_batch_end 在每个批处理结束时调用,此时我们没有 val_loss。val_loss 是在每个 epoch 结束时计算的,而不是在每个批处理结束时计算的。如果您还想在每个批处理结束时获得 val_loss,则应该计算它,但请注意,这会减慢执行速度。也许你可以做这样的事情:

您应该向您的类添加一个 init:

def __init__(self, validation_data):
self.validation_data = validation_data
self.val_losses = []

def on_batch_end(self, batch, logs={}):
x, y = self.validation_data
val_loss, val_acc = self.model.evaluate(x, y, verbose=0)
self.val_losses.append(val_loss)
self.losses.append(logs.get('loss'))

关于python - 尝试从训练模型中获取 val_loss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com