面部表情数据集

时间:2016-10-03 08:10:18

标签: validation machine-learning computer-vision neural-network conv-neural-network

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

我共有55个科目。 我计划将它们分成80-10-10进行训练(45个科目),验证(看不见5个科目),测试(看不见6个科目)。

验证集是否也包括看不见的主题?或者我可以将整个训练集改组并使用其中的一部分(10-20%)作为验证集吗?

我已经读过使用N折叠交叉验证,整个训练集(实例)被洗牌然后分成N折叠并且训练模型并平均N次。 但是,对于神经网络或CNN,我们不使用交叉验证,因为它的计算成本非常高。

我只是想知道哪个是正确的,因为使用了一组看不见的主题,我的模型在3-5个时代之后开始过度拟合并且根本没有学习。 另一方面,如果我使用10-20%的训练集作为我的验证集,我的模型使用3层CNN以合理的准确度(45-50%)学习但是当使用看不见的测试集进行测试时,我的顶部-1精度仅为15-16%左右。

非常感谢。

1 个答案:

答案 0 :(得分:2)

总的来说,没有规则;几乎没有经验法则。开发拓扑和模型的大部分工作是调整超参数;列车 - 测试 - 验证比率仅仅是其中之一。典型的拆分非常大约为2:1:1,具有很大的变化,具体取决于目的和数据集。如果培训小于50%,或者测试或验证小于20%,我开始质疑该部门(尽管15%有时是有用的,特别是如果数据集太小)。

“正确”在很大程度上取决于您对模型的最终目的。如果您希望它能够处理新科目,那么您当然必须包括看不见的科目以进行测试和验证。如果只需要很好地区分给定的主题,那么你需要一个平衡的混合,也许是45:10:0 - 在这种情况下,你会欢迎过度拟合。

如果您希望处理来自一般人群(新科目)的表达,那么我相信您缺少培训科目。要正确调整这样的模型,你需要足够的时间来自由地使用比例,甚至像8:1:1那样纤薄的东西应该能给你认为有用的结果。