对于浮点数,Tensorflow逐位NOT运算

时间:2017-02-01 01:51:44

标签: tensorflow bit-manipulation

我有一个Tensorflow布尔向量,我需要逐位反转,使​​得0(False)的所有值变为1(True),反之亦然。 tf.logical_not存在,但它只需要布尔向量。是否存在Tensorflow在int或float的向量上执行此操作,因此我不需要重构我的张量?

2 个答案:

答案 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