训练期间 val_loss 和 loss 之间的 Keras 差异

数据挖掘 机器学习 深度学习 喀拉斯
2021-09-22 21:31:12

val_lossKeras 训练期间和训练期间有什么区别loss

例如

Epoch 1/20
1000/1000 [==============================] - 1s - loss: 0.1760, val_loss: 0.2032  

在某些网站上,我在验证时读到,辍学不起作用。

2个回答

val_loss是交叉验证数据的成本函数值,损失是训练数据的成本函数值。在验证数据上,使用 dropout 的神经元不会丢弃随机神经元。原因是在训练过程中,我们使用 dropout 来添加一些噪声以避免过度拟合。在计算交叉验证期间,我们处于召回阶段而不是训练阶段。我们使用网络的所有功能。

感谢我们的一位亲爱的朋友,我从这里引用并解释了有用的内容。

validation_split:在 0 和 1 之间浮动。要用作验证数据的训练数据的比例。该模型将分离这部分训练数据,不会对其进行训练,并将在每个 epoch 结束时评估该数据的损失和任何模型指标。在改组之前,从提供的xy数据中的最后一个样本中选择验证数据。

validation_data: 元组 (x_val, y_val) 或元组 (x_val, y_val, val_sample_weights) 在每个 epoch 结束时评估损失和任何模型指标。模型不会根据这些数据进行训练。这将覆盖validation_split。

如你看到的

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

fit中使用的方法Keras有一个名为 validation_split 的参数,它指定用于评估每个 epoch 之后创建的模型的数据百分比。使用此数据量评估模型后,val_loss如果您将详细设置为1; 此外,正如文档明确指出的那样,您可以使用validation_datavalidation_split交叉验证数据用于调查您的模型是否过度拟合数据。这就是我们可以理解我们的模型是否具有泛化能力。

拟合模型时,您可以选择指定未训练的训练数据集部分。这与测试数据集是分开的。

中的“val”val_loss代表“验证”。很遗憾他们没有把它写出来。

model.fit(validation_split=0.1)
# By default, this float is `0.` 

或者,您可以明确地将数据提供给model.fit(validation_data=<see soruce code below>). 如果您想要一个分层(均匀分布)的验证集,这似乎是一个好主意。

培训.py


用例是知道您的模型何时适合您的数据集。否则,您只是来回查看训练集和测试集的损失和准确性,想知道它是否平衡。