Keras中,x_train和x_test有什么区别?

14

我已经查看了一些教程,了解使用卷积神经网络进行深度学习的Keras。在教程中(以及Keras官方文档中),MNIST数据集的加载方式如下:

from keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

然而,没有解释为什么我们有两个数据元组。我的问题是:x_trainy_train是什么,它们与x_testy_test的对应项有何不同


我不知道子集的内容是否不同,但其中一个是用于训练,另一个是用于测试。你想使用不同的数据进行测试,以确保你没有过拟合。编辑:至于为什么要这样分开而不是将所有内容放在一起然后自己切片,我不知道。 - Elliot Roberts
2个回答

32

训练集是用于训练模型的数据集的子集。

  • x_train 是训练数据集。
  • y_train 是所有来自 x_train 数据的标签集。

测试集是经过初始验证集筛选后,用于测试模型的数据集的子集。

  • x_test 是测试数据集。
  • y_test 是所有来自 x_test 数据的标签集。

验证集是数据集的子集(与训练集分离),用于调整超参数。

  • 您列出的示例未提及验证集。

我在YouTube上制作了一个使用Keras进行深度学习播放列表。它包含开始使用Keras的基础知识,其中一些视频演示如何将图像组织成训练/验证/测试集,以及如何让Keras为您创建验证集。查看此实现可能有助于您更好地理解这些不同数据集在实践中的用途。


谢谢提供播放列表链接!我会去看一下。 - Kenny Worden
谢谢你提供的播放列表链接!我也会去看一下。 - Seyon Seyon

1
所有机器学习算法的最终目标是泛化到新数据。如果您基于所有数据创建模型,则无法衡量模型在新数据上的表现。为解决此问题,通常将训练数据分为三个部分,即训练数据集,开发/调整数据集和测试数据集。让我们以将数据分为两部分的例子来说明,即训练和测试。在这种情况下,您将首先将数据分为60/70/80%的训练和40/30/20测试,并应用10倍交叉验证和网格搜索,这对于调整也是有帮助的。请注意,在此期间,您正在训练和调整您的训练数据(甚至不会查看其分布或任何其他东西),从不触及您的测试数据。一旦您生成了模型,您将在测试数据上运行它,并获得模型在未知数据上的性能指标。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接