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

如何在TensorFlow中实现稀疏矩阵每行与稠密向量逐元素相乘

实现方案

你完全不需要将大尺寸稀疏矩阵A转为稠密矩阵,仅基于A的稀疏元数据即可完成计算,计算成本仅和A的非零元素数量正相关,不会额外占用稠密矩阵的内存开销。

核心逻辑是:A的所有非零元素都对应明确的列索引,直接用列索引从向量B中取出对应值,和A原有的非零值逐元素相乘后,复用A的索引和形状构造新的稀疏矩阵即可。

代码实现

import tensorflow as tf

# 你原有的A和B定义
A = tf.sparse.SparseTensor(indices=[[0,0],[1,1],[1,2]], values=[1,1,1], 
                dense_shape=[2,3])
B = tf.constant([4,3,5])

# 核心计算逻辑
# 提取A所有非零元素对应的列索引
col_idx = A.indices[:, 1]
# 取出B中对应列的数值,和A的非零值相乘得到新值
new_values = A.values * tf.gather(B, col_idx)
# 构造结果稀疏矩阵
C = tf.sparse.SparseTensor(
    indices=A.indices,
    values=new_values,
    dense_shape=A.dense_shape
)

# 可选:如果后续需要用到TensorFlow的其他稀疏算子,建议补一步重排,保证稀疏索引有序
C = tf.sparse.reorder(C)

执行后得到的C和你预期的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:03