我有一个由4个浮点组成的张量,称为x
。
如何有50%的几率执行label
?
现在我有:
x[0] = 1 - x[0]
哪个有效,但看起来非常难看。是不是有更聪明/更简单的方法呢?
相关问题:如何将某个操作(例如sqrt)仅应用于两个元素?我猜我必须删除这两个元素,执行操作然后将它们连接回原始矢量?
答案 0 :(得分:3)
tf.select
和tf.cond
在您必须有条件地对张量元素执行计算的情况下派上用场。对于您的示例,以下内容可行:
label = tf.constant([0.35, 0.5, 0.17, 0.14])
inv = tf.pack([1.0, 0.0, 0.0, 0.0])
mask = tf.pack([1.0, -1.0, -1.0, -1.0])
output = tf.cond(tf.random_uniform([], 0, 1.0) > 0.5,
lambda: label,
lambda: (inv - label) * mask)
with tf.Session(''):
print(output.eval())