Keras ошибка умножения элементарной переменной? - PullRequest
0 голосов
/ 06 сентября 2018

Я экспериментирую с переменной 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)

Очевидно, существует значительная ошибка округления. Мой вопрос: это ожидается, как, например, объяснил в Математика с плавающей точкой нарушена? ? Но если это так, то почему это происходит с Керасом, а не с явной тупицей? Различается ли двоичное представление с плавающей запятой в этих двух случаях?

...