人脸表情数据集的训练、验证和测试集划分

我正在使用卷积神经网络(CNN),想询问一下我划分训练/验证/测试集的方式是否正确。

我总共有55个受试者。我计划按80-10-10的比例划分,训练集(45个受试者),验证集(未见过的5个受试者),测试集(未见过的6个受试者)。

验证集是否也应该包含未见过的受试者?还是可以将整个训练集打乱,并使用其中的一部分(10-20%)作为验证集?

我读到过使用N折交叉验证时,会将整个训练集(样本)打乱,然后分成N折,模型会训练并平均N次。然而,对于神经网络或CNN,我们通常不使用交叉验证,因为它计算成本非常高。

我只是想知道哪种方式是正确的,因为使用未见过的受试者的验证集,我的模型在3-5个epoch后就开始过拟合,并且完全没有学习。另一方面,如果我使用训练集的10-20%作为验证集,我的模型使用三层CNN可以以合理准确率(45-50%)学习,但在未见过的测试集上测试时,我的top-1准确率仅为15-16%左右。

非常感谢。


回答:

总的来说,没有固定的规则,甚至连经验法则都很少。开发拓扑结构和模型的大部分工作在于调整超参数;训练-测试-验证的比例只是其中的一个。典型的划分比例大致为2:1:1,但有很大的变化,这取决于目的和数据集。如果训练集少于50%,或者测试集或验证集少于20%(虽然15%有时也有用,尤其是在数据集太小的情况下),我会开始质疑这种划分方式。

“正确”很大程度上取决于您对模型的最终用途。如果您期望它处理新的受试者,那么当然必须在测试和验证中包含未见过的受试者。如果只需要对给定的受试者进行良好的区分,那么您可能需要一个平衡的组合,或许是45:10:0——在这种情况下,您会欢迎过拟合。

如果您期望处理来自普通人群(新受试者)的表情,那么我认为您的训练受试者数量不足。为了适当调整这样的模型,您需要足够的受试者,以便可以自由调整比例,即使是8:1:1这样的比例也应该能给您提供可用的结果。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注