Keras逐元素变量乘法错误?

时间:2018-09-05 22:15:03

标签: python math floating-point keras precision

我正在尝试使用Keras变量来构建自定义损失函数,但偶然发现了一个奇怪的行为。 让我们在np.arrays中进行此元素操作

np_yt = np.arange(10)/10
np_yw = np.arange(10)
np_yt * np_yw

输出为

array([0. , 0.1, 0.4, 0.9, 1.6, 2.5, 3.6, 4.9, 6.4, 8.1])

我尝试对Keras变量做同样的事情

yt = K.variable(np.arange(10)/10)
yw = K.variable(np.arange(10))
K.eval( yt*yw )

输出为

array([0.        , 0.1       , 0.4       , 0.90000004, 1.6       ,
       2.5       , 3.6000001 , 4.9       , 6.4       , 8.099999  ],
      dtype=float32)

显然存在明显的舍入误差。 我的问题是:这是预期的吗?在解释 Is floating point math broken?? 但是如果是这样,为什么在Keras而不是纯粹的numpy中发生这种情况?两种情况下浮点二进制表示形式是否不同?

0 个答案:

没有答案