Keras Metric странное поведение - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь определить метрику Keras, которая возвращает округленное значение.(Обычно K.round () не может использоваться в потере, поскольку он не дифференцируем, но я думаю, что его можно использовать в метрике).

Однако, несмотря на использование K.round (), метрика постоянно имеет десятичную дробьместа, давая мне значения, как 2.0812 и аналогичные.Стоит отметить, что мои y_true - это 3 списка с плавающей запятой, такие как [1., 3., 5.], [2., 5., 1.] и т. Д.

Чтобы попытаться понять, что такоеЯ определил очень простую метрику.

def simplemetric(y_true, y_pred):
    return (y_true)

Я ожидал, что это выдаст мне ошибку, но он возвращает значения около 2.089, которые слегка изменяются в каждую эпоху, но не в зависимости от размера пакета (который равен 128).

Затем я попробовал другую метрику.

def simplemetric(y_true, y_pred):
    return (K.round(K.sum(y_true)))

Это дает мне значения около 800,142, которые незначительно отличаются в каждой эпохе, но не с номером партии.

В качестве финального тестаЯ попытался:

def simplemetric(y_true, y_pred):
    return (y_true*0 + 10.0)

Что дает мне ожидаемое значение 10,0 в каждую эпоху.

Так что же происходит в предыдущих случаях?Почему я не могу получить целое число, и что означает ~ 2.и ~ 800 керас каким-то образом вычисляется из списков вроде [1., 2., 5.]?

...