得到截断svd.transform()返回float16而不是float64

2024-09-19 20:30:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Sci kit Learn的TruncatedSVD算法对稀疏矩阵执行LSA。我希望转换后的稠密矩阵的数据类型为float16,而不是{}。我不想改变我的数据类型。我想让TruncatedSVD.fit()直接返回float16类型的内容-我该怎么做?在

在应用转换之前,我尝试将原来的稀疏矩阵和TruncatedSVD.components_更改为float16,但输出数据类型仅为float32这是一个改进,但并不是我想要的那样。在


Tags: 算法类型内容components矩阵learnkitfit
1条回答
网友
1楼 · 发布于 2024-09-19 20:30:09

在代码中,TruncatedSVD使用来自sklearn.utilsas_float_array()as_float_array()的代码是here。在

如您所见,文档指出

The new dtype will be np.float32 or np.float64

我想你可以把它修改成float16(也许完全去掉as_float_array的用法?),但我不知道会有什么后果。在

你应该考虑的一件事是,在这类数值算法中使用更大的变量(例如float64)有助于提高数值稳定性。如果你要处理一个非常大的矩阵,这一点尤其重要。如果使用float16,可能会因为数值问题而冒着得到错误结果的风险。在

相关问题 更多 >