python - 如何将 SparseTensorValue 转换为 numpy 数组?

标签 python numpy tensorflow

我有一个 Tensorflow 网络,可以在调用 Session().run() 后获取图形的值。但是,我在将 SparseTensorValue 转换为其他类型时遇到了一些问题。

例如,下面的程序创建了一个SparseTensorValue

>>> import tensorflow as tf
>>> t = tf.Session().run(tf.SparseTensor([[0,1], [0,0], [1,1], [1,0]],[1,2,3,4],[2,2]))
>>> print(t)
SparseTensorValue(indices=array([[0, 1],
       [0, 0],
       [1, 1],
       [1, 0]]), values=array([1, 2, 3, 4], dtype=int32), dense_shape=array([2, 2]))
>>> 

我想要的是一些将t转换为np.arraynp.matrix的方法,例如,np .array([[2., 1.], [4., 3.]])

我目前有以下内容

>>> import numpy as np
>>> a = np.zeros(t.dense_shape)
>>> for i, v in zip(t.indices, t.values) :
...     a[tuple(i)] = v
... 
>>> print(a)
[[2. 1.]
 [4. 3.]]
>>> 

有没有更好的方法来执行转换?特别是,我想消除 for 循环。

最佳答案

感谢hpaulj的提示,我从Tensorflow的网站上找到了转换的方法。

tf.Session().run(tf.sparse.to_dense(tf.sparse.reorder(t)))

首先将值重新排序为字典顺序,然后使用to_dense使其密集,最后将张量提供给Session().run()

关于python - 如何将 SparseTensorValue 转换为 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704850/

相关文章:

python - 从 python 字典更新文本文件

python - 在 Python 中获取彩色形状周围边界的坐标

python - 将 3x32x32 大小的 numpy 图像数组转换为 32x32x3 并保存为 Python 中的实际图像

python - 如何使用numpy在Python中删除包含特定字符串的行?

python - 当 GroupBy 对象可能不包含某个键时如何避免 Pandas Groupby 键错误

python - 在 python 中使用 scipy 截断正态分布

python - 在给定向量 a 的情况下,在矩阵 F(a[i], a[j]) 上使用 .sum 执行三角求和的有效方法

python - 为什么分类交叉熵的梯度不正确?

tensorflow - 使用 keras 进行分类 : input data shape

python - 从 model.ckpt.meta 中提取图形 def