我有一个Tensorflow布尔向量,我需要逐位反转,使得0(False)的所有值变为1(True),反之亦然。 tf.logical_not存在,但它只需要布尔向量。是否存在Tensorflow在int或float的向量上执行此操作,因此我不需要重构我的张量?
答案 0 :(得分:5)
TensorFlow不包含用于执行按位NOT的特定运算符,但您可以使用tf.bitcast()
和整数上的算术运算来模拟它。例如,以下内容将反转单个浮点值中的位:
input_value = tf.constant(37.0)
bitcast_to_int32 = tf.bitcast(input_value, tf.int32)
invert_bits = tf.constant(-1) - bitcast_to_int32
bitcast_to_float = tf.bitcast(invert_bits, tf.float32)
您可以使用this answer确认输入和输出是按位反转,以将浮点值转换为二进制值。
答案 1 :(得分:1)
我看到的唯一方法是tf.cast
张量到dtype = tensor.dtype
btensor = tf.cast(tensor, tf.bool)
not_tensor = tf.logical_not(btensor)
tensor = tf.cast(not_tensor, dtype)
然后调用tf.logical_not
然后再投回。
com.xxxxxxxx.PitchPerfect