2016-11-16 286 views
2

在很多例子中,我看到使用KfoldStratifiedKfold或其他预建数据集分离器来执行训练/交叉验证数据集分割。凯拉斯车型内置validation_split kwarg,可用于训练。建议在Keras培训中使用Kfold split或validation_split kwarg?

model.fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None) 

https://keras.io/models/model/

validation_split:浮子0和1之间:训练数据的分数被用作验证数据。该模型将分开这部分训练数据,不会训练它,并将在每个时期结束时评估这些数据的损失和任何模型度量。

我是新来的领域和工具,所以我对不同的分离器为您提供什么样的直觉。但主要是,我找不到关于Keras的validation_split是如何工作的任何信息。有人可以解释给我,当单独的方法是可取的?内置的kwarg对我来说似乎是分离测试数据集的最简单和最简单的方法,而不必非常不同地构建您的训练循环。

回答

1

两者之间的差异很微妙,它们可以结合使用。

Kfoldscikit-learn中的类似函数会随机将您的数据拆分为k折叠。然后,您可以训练每次只展示一次的模型并在折叠上进行测试。

validation_split非随机地占用您的数据的一小部分。根据Keras documentation它会从数据末尾取得分数,例如0.1将保持输入矩阵中最后10%的行。验证拆分的目的是让您评估模型在训练集上的表现以及在训练期内每个时期的持续集。如果模型继续在训练集上而不是验证集上得到改进,那么这是一个潜在过度拟合的明显迹象。

理论上,您可以使用KFold交叉验证来构建模型,同时还使用validation_split来监视每个模型的性能。在每次折叠时,您将从训练数据中生成一个新的validation_split