TensorFlow 布尔索引

TensorFlow boolean indexing

直说吧,目前,我想索引一个张量,并将非零项更改为-1,将零项更改为1。但是我不知道如何在TensorFlow中进行。

这是我的代码:

y_[y_ != 0].assign(-1)
y_[y_ == 0].assign(1)

原因是 TensorFlow 似乎不支持布尔索引。我该如何解决?

顺便说一句,似乎 boolean_mask 对我不起作用,因为我不想 return 一片 y_,我只想让 y_ 改变它的值。

谢谢!

条件赋值可以使用tf.cond()。我在下面给出了示例代码,

import tensorflow as tf

x_= tf.Variable(5) #non-zero variable
y_= tf.Variable(0) #variable euqals to 0

y_ =tf.cond(tf.equal(y_,0),lambda :y_.assign(1),lambda :y_.assign(-1)) #assign 1 if variable equals to zero else -1
x_ =tf.cond(tf.equal(x_,0),lambda :x_.assign(1),lambda :x_.assign(-1)) #assign 1 if variable equals to zero else -1

sess = tf.Session()
sess.run(tf.global_variables_initializer())

with sess.as_default():
   print(y_.eval()) #prints 1
   print(x_.eval()) #prints -1

希望对您有所帮助。