3 回答
TA贡献1848条经验 获得超2个赞
答案 1:如果错误仅在您使用较小的数据集时发生,那么您很可能使用的数据集小到在验证集中没有单个样本。
因此它无法计算验证损失。
答案 2:我对上一个答案投了赞成票,因为它让我有见识来验证 fit_generator 函数的数据和输入,并找出问题的根本原因。总之,在我的数据集很小的情况下,我计算了validation_steps 和steps_per_epoch,结果是零(0)导致了错误。
我想,也许对 Keras 团队来说,更好的长期答案是当这些值为零时在 fit_generator 中导致错误/异常,这可能会导致更好地理解如何解决这个问题。
答案 3:我们发生错误是因为我们忘记在 fit() 方法中设置validation_data,而使用了'callbacks':[keras.callbacks.EarlyStopping(monitor='val_loss', patient=1)],
导致错误的代码是:
self.model.fit(
x=x_train,
y=y_train,
callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=1)],
verbose=True)
Adding validation_data=(self.x_validate, self.y_validate), in fit() fixed:
self.model.fit(
x=x_train,
y=y_train,
callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=1)],
validation_data=(x_validate, y_validate),
verbose=True)
回答 4:由于数据集较小而出现此错误,为了解决此问题,增加火车时间并将火车集拆分为 80:20。
参考:https ://inneka.com/ml/kr/keras-early-stopping-callback-error-val_loss-metric-not-available/
添加回答
举报