Python3中如何判断tf.Tensor数据集对象内存储的numpy.int64值是否相等
问题解决方法
你打印token直接输出0,且type(token)返回<class 'numpy.int64'>,说明你当前的token对象本身已经是提取完成的numpy标量,不是tf.Tensor类型,你看到的tf.Tensor([[2]], shape=(1, 1), dtype=int32)属于其他变量的打印输出,和当前token无关。由于token当前实际值为0,因此和2对比返回False属于正常结果。
两种场景的实现方案
场景1:token为numpy.int64标量(你当前的实际场景)
直接用普通Python布尔判断即可,不需要调用TensorFlow API:
# 直接判断值是否等于2 is_equal_to_2 = (token == 2) print(is_equal_to_2) # 输出为True/False的布尔值,值随token变化自动更新
场景2:token实际是shape=(1,1)的tf.Tensor类型
如果后续你需要处理Tensor类型的token,可以用以下方法实现判断,同时兼容动态值变化的需求:
# 方法1:获取Python布尔值结果(适用于Eager Execution模式,TF2.x默认开启) is_equal_to_2 = tf.equal(token, 2).numpy().item() print(is_equal_to_2) # 方法2:保留Tensor类型的布尔结果(适用于嵌入TensorFlow计算图的场景) is_equal_to_2 = tf.equal(token, 2)
校验步骤
如果结果不符合预期,可以先执行以下代码确认token的真实属性,排除变量混淆的问题:
print("token类型:", type(token)) print("token实际值:", token)
内容的提问来源于stack exchange,提问作者hackr
相关产品推荐
相关产品推荐

