为何Python代码print(np.array([1355742581.0])[0]<torch.LongTensor([1355742616.0])[0])输出False?
问题原因与解决方法
核心问题
你遇到的是numpy浮点标量与torch长整型张量比较时,结果不符合预期的情况。
可能原因
- 隐性类型转换Bug:当numpy的float64标量和torch的int64张量比较时,会自动进行类型提升,但旧版本torch可能存在类型转换逻辑漏洞,导致比较结果异常。
- 数值笔误:检查torch张量的实际值,若初始化时写错了数值(比如把
1355742616.0写成更小的数),会直接导致结果为False。可以单独打印张量确认:print(torch.LongTensor([1355742616.0])[0]) - 跨设备比较异常:如果torch张量在GPU上,而numpy标量在CPU,跨设备的比较可能出现未定义行为。
解决方法
统一类型后再比较,避免隐性转换:
- 方案一:将numpy标量转为torch长整型张量
print(torch.tensor(np.array([1355742581.0])[0], dtype=torch.int64) < torch.LongTensor([1355742616.0])[0]) - 方案二:将torch张量转为numpy标量
print(np.array([1355742581.0])[0] < torch.LongTensor([1355742616.0])[0].numpy())
内容的提问来源于stack exchange,提问作者shelvey jiang
相关产品推荐
相关产品推荐

