You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tf.train.FloatList为何会出现精度损失问题?

Python float转tf.train.FloatList精度丢失原因及解决方法
  • 核心问题在于**tf.train.FloatList默认采用单精度浮点数(float32)存储**,而Python中的float类型本质是双精度浮点数(float64)。
  • 当你将Python的float64数值传入FloatList时,TensorFlow会自动执行类型转换,把双精度值转为单精度。由于float32的有效位数仅约7位,远少于float64的15-17位,转换过程必然会损失部分精度。你看到的2.299999952316284就是2.3转成float32后的精确存储结果,这是浮点数二进制表示的正常特性,并非程序错误。
  • 如果需要完全保留原数值的精度,只需改用**tf.train.DoubleList**,它专门用于存储双精度浮点数,转换后不会出现精度丢失:
import tensorflow as tf

x = 2.3
lst = tf.train.DoubleList(value=[x])
reloaded = lst.value[0]  # 结果为2.3

内容的提问来源于stack exchange,提问作者gebbissimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:10:06