在Kaggle的许多笔记本中,我看到了一些用来减少数据内存使用的方法,例如将int64类型的列转换为int32类型。如果数据已经能够装入内存,为什么我们还要减少内存使用呢?这样做是否能让机器学习模型在数据上的训练速度更快?
回答:
是的。在许多模型中,会涉及到大量的特征向量计算。
例如,在多层感知机(MLP)中,我们会对特征表示进行加权求和,以在每个神经元中产生输出。
如果特征向量的分量是32位而不是64位,计算速度会快得多。
让我用一个简单的例子来说明:
结果如下所示。可以看到,在CPU上进行简单乘法运算时,int32的速度远快于int64。通常发现这种转换有助于节省训练时间/预测时间。
0.000869657381.7849500000000074e-06