我正在使用 Sci-kit Learn 的 TruncatedSVD
算法在稀疏矩阵上执行 LSA。我希望转换后的密集矩阵具有数据类型 float16
而不是 float64
。注意:我不想在转换后更改数据类型 - 那时我的计算机内存将不足。我希望 TruncatedSVD.fit()
直接返回 float16
类型的内容 - 我该怎么做?
在应用转换之前,我尝试将原始稀疏矩阵和 TruncatedSVD.components_
更改为 float16
,但输出数据类型仅为 float32
- 有所改进,但不完全是我想要的。
最佳答案
查看代码,TruncatedSVD
使用 sklearn.utils
中的 as_float_array()
。 as_float_array()
的代码是 here .
如您所见,文档指出
The new dtype will be np.float32 or np.float64
我想你可以将它修改为 float16(也许完全删除 as_float_array
的使用?),但我不确定后果是什么。
您应该考虑的一件事是,在此类数值算法中使用较大的变量(例如 float64)有助于提高数值稳定性。如果您正在处理非常大的矩阵,这一点尤其重要。如果您使用 float16,您可能会面临由于数值问题而得到不正确结果的风险。
关于python - 获取 TruncatedSVD.transform() 返回 float16 而不是 float64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499015/