为何tf.math.exp有时返回float64格式而非float32?
问题原因解析
两种场景的 dtype 差异原因
场景1:tf.math.exp(2.0/20.0) 返回 float32
2.0/20.0 是 Python 原生的 float(对应 float64),但 TensorFlow 处理 Python 数值输入时,会默认使用全局默认浮点类型(通常是 float32,可通过 tf.keras.backend.floatx() 查看)进行转换,所以最终运算和输出的张量都是 float32 类型。
场景2:tf.math.exp(y[i]/20) 返回 float64
- 首先,
y[i]是 numpy 的float32标量,20是 Python 原生 int(对应 numpy 的int64类型)。根据 numpy 的类型提升规则,不同精度的数值类型运算时会自动提升到更高精度的类型,这里float32和int64运算后得到的是float64类型的 numpy 标量。 - 当这个
float64的 numpy 标量传入tf.math.exp时,TensorFlow 会保留输入的原始类型,不会自动转换为默认的float32,因此输出张量为float64类型。
内容的提问来源于stack exchange,提问作者Santa Bot
相关产品推荐
相关产品推荐

