【发布时间】:2020-11-08 08:04:34
【问题描述】:
我正在处理一个大型数据集(例如,对于单台机器来说很大)- 包含 1,000,000 个示例。
我将我的数据集拆分如下:(80% 训练数据,10% 验证数据,10% 测试数据)。每次我重新训练模型时,我都会先对数据进行洗牌 - 这样验证/测试集中的一些数据最终会进入训练集,反之亦然。)
我的想法是这样的:
- 理想情况下,我希望模型能够学习所有可能的可用数据。越多越好 - 以提高准确性。
- 尽管 20% 的数据专用于验证和测试,但仍然是每件 100,000 个示例 - (即我可能会错过验证或测试集中存在的一些关键数据,而之前的训练集可能没有考虑。)
- 洗牌可防止训练集学习不重要的顺序(至少在我的特定数据集中)。
- 测试准确度或多或少等同于验证准确度(正负 0.5%)
每次再训练,结果通常会是这样:准确度不断提高(直到用完总时期),但验证准确度最终停留在特定百分比。然后我保存该模型。再次开始再培训过程。随机播放数据。训练准确率下降,但验证准确率上升。训练精度提高到总时期。验证准确度,向下收敛(仍高于前一次运行)。
我计划这样做,直到训练准确度数据达到 99%。 (注意:我使用 Keras-Tuner 为我的特定问题找到了最佳架构/模型)
我不禁想,我这样做是做错了什么。从我的角度来看,这只是最终学习所有 1,000,000 个示例的模型。感觉就像“轻度过度拟合”,因为每次重新训练都会改组。
将验证/测试数据与训练数据混合是个好主意吗? 我这样做有错吗?如果是这样,为什么我不应该使用这种方法?有没有更好的方法来解决这个问题?
【问题讨论】:
标签: tensorflow machine-learning deep-learning neural-network conv-neural-network