python - 将密集向量与 Tensorflow 中稀疏矩阵的每一行相乘
问题描述
假设我有一个稀疏矩阵
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 和向量 B 的形状(2,3)
分别(1,3)
为 。我想逐元素地将 B 与 A 的每一行相乘。预期的结果是另一个稀疏矩阵,比如说
C = tf.sparse.SparseTensor(indices=[[0,0],[1,1],[1,2]], values=[4,3,5],
dense_shape=[2,3])
我知道如果A
是一个密集矩阵会相对容易,但是 的密集大小A
非常大,并且其中的大多数元素A
为零。
解决方案
只需乘以星号*
即可。
tf.reduce_all(tf.sparse.to_dense(A * B) == tf.sparse.to_dense(C))
<tf.Tensor: shape=(), dtype=bool, numpy=True>
顺便说一句,B
有形状(3,)
,没有(1, 3)
这是此操作的结果:
<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[4, 0, 0],
[0, 3, 5]])>
您也可以手动完成此操作,但请注意广播规则:
tf.sparse.SparseTensor(indices=A.indices, values=A.values * B,
dense_shape=A.dense_shape)
推荐阅读
- node.js - "npm run build" = "react-scripts: Permission denied"
- c++ - 非零随机数的乘法
- c++ - 错误:C2664 'void RecursiveDelete(LPWSTR,LPWSTR)':无法将参数 2 从 'const wchar_t [12]' 转换为 'LPWSTR'
- reactjs - React Native - 注册屏幕不起作用
- amazon-emr - 即使在指定 hadoopConfigs 之后,Spark 也无法写入 S3 加密存储桶
- javascript - 谷歌控制台错误“未捕获的类型错误:无法读取 null 的属性‘样式’”
- java - 如何在spring data jpa中基于动态查询检索/显示列名及其数据?
- javascript - 使用 html 表单进行验证仅给出 if 语句
- flutter - 颤振:从 Firestore 文档中获取标记到谷歌地图,但不显示
- java - Spring Boot Security - 如果缺少授权标头,则使用 Cookie 中的令牌