Tensorflow:获取零数组行的索引

Qub*_*bix 3 arrays indexing tensorflow

对于张量

[[1 2 3 1]
 [0 0 0 0]
 [1 3 5 7]
 [0 0 0 0]
 [3 5 7 8]]
Run Code Online (Sandbox Code Playgroud)

如何获得 0 行的索引?即列表 [1,3],在 Tensorflow 中?

ale*_*its 7

据我所知,您无法像使用更高级的库(如 NumPy)那样在一个命令中真正做到这一点。如果你真的想使用 TF 函数,我可以推荐一些:

x = tf.Variable([
    [1,2,3,1],
    [0,0,0,0],
    [1,3,5,7],
    [0,0,0,0],
    [3,5,7,8]])

y = tf.Variable([0,0,0,0])
condition = tf.equal(x, y)
indices = tf.where(condition)
Run Code Online (Sandbox Code Playgroud)

这将导致以下结果:

[[1 0]
 [1 1]
 [1 2]
 [1 3]
 [3 0]
 [3 1]
 [3 2]
 [3 3]]
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想获得零线,则可以使用以下内容:

row_wise_sum = tf.reduce_sum(tf.abs(x),1)
select_zero_sum = tf.where(tf.equal(row_wise_sum,0))

with tf.Session() as sess:
    tf.global_variables_initializer().run()
    print(sess.run(select_zero_sum))
Run Code Online (Sandbox Code Playgroud)

结果是:

[[1]
 [3]]
Run Code Online (Sandbox Code Playgroud)