在TensorFlow中,如何使用python从张量中获取非零值及其索引?
python
tensorflow
7
0

我想做这样的事情。
假设我们有一个张量A。

A = [[1,0],[0,4]]

我想从中获取非零值及其索引。

Nonzero values: [1,4]  
Nonzero indices: [[0,0],[1,1]]

Numpy中有类似的操作。
np.flatnonzero(A)返回在展平的A中非零的索引。
x.ravel()[np.flatnonzero(x)]根据非零索引提取元素。
这是这些操作的链接

如何使用python在Tensorflow中进行类似上述Numpy操作的操作?
(矩阵是否被展平并不重要。)

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃
#assume that an array has 0, 3.069711,  3.167817.
mask = tf.greater(array, 0)
non_zero_array = tf.boolean_mask(array, mask)
收藏
评论

您可以使用not_equalwhere方法在Tensorflow中获得相同的结果。

zero = tf.constant(0, dtype=tf.float32)
where = tf.not_equal(A, zero)

where以下情况下,与A形状相同的张量为TrueFalse

[[True, False],
 [False, True]]

这足以从A选择零或非零元素。如果要获取索引,可以使用where方法,如下所示:

indices = tf.where(where)

where张有两个True值,因此indices张量将有两个条目。 where张量的秩为2,因此条目将具有两个索引:

[[0, 0],
 [1, 1]]
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题