假设我们有价值50万个项目的培训数据,那么我们是一次培训一个项目,还是一次培训n个项目,还是一次培训所有项目,这有关系吗?在
考虑inputTrainingData
和{[[]]
,而{
选项1一次训练一个项目-
for i in range(len(inputTrainingData)):
train_step.run(feed_dict={x: [inputTrainingData[i]], y: [outputTrainingData[i]], keep_prob: .60}, session= sess)
选项2一次训练-
^{pr2}$就培训质量而言,上述方案1和2之间有什么区别吗?在
这两种方法在数学上是不同的。一种叫做随机梯度下降,另一种叫做批量梯度下降。你错过了最常用的一种——小批量梯度下降。关于这个问题已经有很多研究,但是基本上不同的批量大小有不同的收敛特性。通常,人们使用的批处理大小大于1,但不是完整的数据集。这通常是必要的,因为大多数数据集不能同时放入内存中。另外,如果您的模型使用批处理规范化,那么一个批大小将不会收敛。本文paper讨论了批处理大小(以及其他因素)对性能的影响。其结果是,较大的批量并不能普遍适用。(事实上,他们认为这不是批处理大小本身,而是当批处理更大时更新更少。我建议批量大小为32开始试验,看看批量大小如何影响性能。在
这是一个图表,显示了批量大小对培训和验证性能的影响。在
这两个选项是不同的。通常,您必须使用batchsize来训练例如128次数据迭代。 您还可以使用批处理大小为1,如第一个示例所示。 这种方法的优点是可以输出神经网络的训练效率。在
如果你在一个地方学习所有的数据,你的速度会快一点,但你只有在最后才知道你的效率是好的。在
最好的方法是制作一个batchsize并按栈学习。所以你可以在每一个堆栈之后输出你的效率,并控制你的效率。在
是的,有区别。选项1的内存消耗要少得多,但精确度也要低得多。选项2可能会吃掉你所有的内存,但应该证明更准确。但是,如果一次使用所有训练集,一定要限制步数以避免过度适应。 理想情况下,成批使用数据(通常在16到256之间)。 大多数优化技术都是“随机的”,即它们依赖于样本的统计样本来估计模型的更新。 总而言之: -更多数据=>;更准确(但内存更多)=>;过度拟合的风险更高(因此限制培训步骤的数量)
相关问题 更多 >
编程相关推荐