Я пытаюсь определить метрику 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.]?