You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

百万级Scipy稀疏矩阵转Tensorflow Sparse Tensor过慢,求优化方法

Scipy CSR稀疏矩阵转TensorFlow Sparse Tensor 提速方案

针对超大规模(百万级行列)CSR矩阵转换耗时过长的问题,可通过以下几个方向优化:

1. 优化索引生成逻辑

原代码中np.mat([coo.row, coo.col]).transpose()会额外创建矩阵对象,对超大规模数据来说内存和时间开销极大。改用更高效的numpy数组拼接方式:

# 直接构造二维索引数组,避免矩阵对象和多余转置操作
indices = np.column_stack((coo.row, coo.col))
# 或者用stack方式,效果一致但更直观
indices = np.stack([coo.row, coo.col], axis=1)

2. 提前指定数据类型,减少内存拷贝

原代码先转COO格式再执行astype(np.float32),会生成额外的数据副本。可在转COO时直接指定目标类型,省去一次内存复制:

coo = norm_adj_mat.tocoo(dtype=np.float32)

3. 使用TensorFlow原生转换API(最优方案)

TensorFlow 2.x提供了tf.sparse.from_scipy_sparse_matrix原生函数,可直接将Scipy的CSR/COO等稀疏矩阵转换为TensorFlow SparseTensor,底层采用优化的C++实现,跳过手动构造索引的低效步骤:

# 直接转换,无需手动转COO或构造索引
A_tilde = tf.sparse.from_scipy_sparse_matrix(norm_adj_mat.astype(np.float32))

若原矩阵的数据类型已符合要求(如float32),可省略astype操作进一步提速。


内容的提问来源于stack exchange,提问作者xerxes01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:25:41