我已经看了一些教程,使用卷积神经网络深入学习Keras。在教程中(以及Keras的官方文档中),MNIST数据集的加载方式如下:
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
但是,没有解释为什么我们有两个元组的数据。我的问题是: x_train
和y_train
是什么?它们与x_test
和y_test
对应方的区别如何?
答案 0 :(得分:13)
训练集是用于训练模型的数据集的子集。
x_train
是训练数据集。 y_train
是x_train
中所有数据的标签集。测试集是在模型经过验证集初步审核后用于测试模型的数据集的子集。
x_test
是测试数据集。y_test
是x_test
中所有数据的标签集。验证集是用于调整超参数的数据集的子集(与训练集分开)。
我在Youtube上制作了Deep Learning with Keras playlist。它包含了Keras入门的基础知识,以及一些视频演示了如何将图像组织到训练/有效/测试集中,以及如何让Keras为您创建验证集。看到这个实现可能会帮助您更加牢固地掌握这些不同的数据集在实践中的使用方式。
答案 1 :(得分:1)
所有机器学习算法的最终目标是推广到新数据。如果您根据所有数据创建模型,则不会有关于模型在新数据上的执行情况的指标。为了解决这个问题,我们通常将列车数据分成三部分,训练数据集,开发/调整数据集和测试数据集。让我们举例说明将数据分成两部分,即训练和测试。在这种情况下,您首先将数据分成60/70/80%列车和40/30/20测试,并应用10倍交叉验证和网格搜索,这对调整也很有帮助。请注意,直到这次你正在训练和调整训练数据(在调整阶段你永远不会碰你测试数据,甚至不看它的分布或任何东西)。 生成模型后,您将在测试数据上运行它,并在测试数据上获得模型的性能。这将作为模型对未知数据的性能指标。