训练期间val_loss与损失之间的Keras差异


18

在Keras中进行培训val_lossloss进行培训有什么区别?

例如

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

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


您所读到的关于辍学的信息可能是,当使用辍学(即dropout未使用None)时,辍学仅在训练期间适用(即在验证期间未应用退学)。因此,验证损失(val_loss)和训练损失(loss)之间的差异之一是,当使用辍学时,验证损失可以低于训练损失(通常在不使用辍学的情况下通常无法预期)。
Psi

Answers:


15

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

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

validation_split:在0到1之间浮动。训练数据的一部分用作验证数据。模型将分开训练数据的这一部分,不对其进行训练,并且将在每个时期结束时评估此数据的损失和任何模型度量。在改组之前,从提供的xy数据中的最后一个样本中选择验证数据。

validation_data:元组(x_val,y_val)或元组(x_val,y_val,val_sample_weights),在每个时期结束时可评估损失和任何模型指标。该模型将不会根据此数据进行训练。这将覆盖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的参数,该参数指定用于评估在每个时期之后创建的模型的数据百分比。使用大量数据评估模型后,val_loss如果将verbose设置为,则会通过进行报告1。此外,正如文档中明确规定的那样,您可以使用validation_datavalidation_split。交叉验证数据用于调查您的模型是否适合数据。这就是我们可以了解我们的模型是否具有泛化能力的内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.