神经网络 - 输入规范化

时间:2018-04-01 01:28:54

标签: python tensorflow machine-learning neural-network deep-learning

通常的做法是将输入值(对神经网络)进行标准化,以加快学习过程,尤其是在要素具有非常大的尺度时。

在其理论中,规范化很容易理解。但我想知道如果训练数据集非常大,如果有100万个训练样例,怎么做呢?如果每个训练示例的#个功能也很大(例如,每个训练示例有100个功能),则会突然出现2个问题: - 将所有训练样本标准化需要一些时间 - 需要将规范化的训练示例保存在某处,这样我们就需要将必要的磁盘空间加倍(特别是如果我们不想覆盖原始数据)。

如何在实践中解决输入规范化,特别是如果数据集非常大?

一种选择可能是在训练时每个小批量内存中动态标准化输入。但是标准化结果将从一个小批量变为另一个。那会不会容忍吗?

这个平台上可能有人在这个问题上有经验。如果你能分享你的经历,我将非常感激。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

大量功能可以更轻松地并行化数据集的规范化。这不是一个真正的问题。大型数据集的规范化很容易被GPU加速,而且速度非常快。即使对于您描述的大型数据集也是如此。我编写的一个框架可以在一个4核4线程CPU上在10秒内规范化整个MNIST数据集。 GPU可以在2秒内轻松完成。计算不是问题。对于较小的数据集,您可以将整个规范化数据集保存在内存中,对于较大的数据集,如您所提到的,如果规范化整个数据集,则需要换出磁盘。但是,如果您的批量大小合适,大约为128或更高,则您的最小值和最大值不会波动那么多,具体取决于数据集。这允许您在训练网络之前对小型批次进行标准化,但这又取决于网络。我建议根据您的数据集进行实验,并选择最佳方法。