Performance 更少的数据位表示是否会提高机器学习模型的训练时间?

Performance 更少的数据位表示是否会提高机器学习模型的训练时间?,performance,machine-learning,Performance,Machine Learning,在kaggle上的许多笔记本中,我看到了减少数据内存使用的方法,例如将int64列转换为int32。 如果数据可以放在内存中,我们为什么要减少内存使用?它是否使机器学习模型在数据上训练得更快?是的。在许多模型中,将有大量涉及特征向量的计算。 例如,在MLP中,我们将对特征表示进行加权和,以在每个神经元中产生输出 与64位表示相比,如果特征向量组件为32位,则计算速度要快得多 让我用一个简单的例子来说明: import timeit mult64=“” 将numpy作为np导入 arr64=np.

在kaggle上的许多笔记本中,我看到了减少数据内存使用的方法,例如将int64列转换为int32。
如果数据可以放在内存中,我们为什么要减少内存使用?它是否使机器学习模型在数据上训练得更快?

是的。在许多模型中,将有大量涉及特征向量的计算。
例如,在MLP中,我们将对特征表示进行加权和,以在每个神经元中产生输出

与64位表示相比,如果特征向量组件为32位,则计算速度要快得多

让我用一个简单的例子来说明:

import timeit
mult64=“”
将numpy作为np导入
arr64=np.int64([3,4,5])
arr64*arr64
"""
mult32=“”
将numpy作为np导入
arr32=np.int32([3,4,5])
arr32*arr32
"""
mult64_time=timeit.timeit(mult64,number=100)/100
mult32_time=timeit.timeit(mult32,number=100)/100
打印(多个64_时间)
打印(多次)
给我的结果如下。可以看出,int32在CPU上执行简单乘法所需的时间比int64快得多。我们普遍发现这种转换有助于节省培训时间/预测时间

0.00086965738
1.7849500000000074e-06

@沙漠之舟
“”“
只是多行扩展字符串。我使用timeit执行这些,并平均商定的时间,但它不是那样可复制的;如果只使用随机生成的数字,并避免在假设的外部
sample data.csv
文件中引用未给定的数据,则可以轻松地使其更加优雅,并可直接复制。我本能地投了赞成票,但当我意识到这是不可复制的时,我收回了。当然,这是你的答案,你想做什么就做什么,我只是说…@desertnaut删除了对文件的引用,用适当的类型硬编码了一个numpy数组以显示差异。我不知道你所说的不可复制是什么意思。对不起,我的错-我从未见过这种风格的Python代码,但它确实是可复制的。但是,毫不奇怪,由于只有3个数字,我得到的时差比您显示的要小得多。@desertnaut:这可能会根据我们运行此程序的系统而有所不同。