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
希望对您有所帮助。
直说吧,目前,我想索引一个张量,并将非零项更改为-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
希望对您有所帮助。