张量除法精度误差

时间:2018-05-04 08:32:15

标签: node.js tensorflow tensorflow.js

我在节点(v10.0.0)上使用@tensorflow/tfjs(v0.10.3),我通过简单的算术运算得到以下输出

> import * as tf from '@tensorflow/tfjs'

> tf.print(tf.tensor1d([10]).div(tf.scalar(3)))
Tensor
    [3.3333333]

> tf.tensor1d([10]).div(tf.scalar(3)).get(0)
3.3333332538604736

> 10 / 3
3.3333333333333335

为什么可以通过简单的划分获得不同的结果?

1 个答案:

答案 0 :(得分:1)

很可能tensorflow使用32位浮点数来存储值,但这些值会被javascript转换回64位浮点数,因为javascript中的浮点数为always 64 bit

作为示例,请考虑Python中的以下内容:

import numpy as np

a = np.float32(10.0)
b = np.float32(3.0)
print(a/b)

> 3.3333333

print(np.float64(a/b))

> 3.3333332538604736

a = np.float64(10.0)
b = np.float64(3.0)
print(a/b)

> 3.3333333333333335