Присвойте значения тензорам в кератах при определении новой функции потерь - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь определить функцию потерь в Керасе

def rmseApprox(y_true, y_pred):
    dum = y_pred
    dum[y_pred>=0]=1.1
    dum[y_pred<0]=1

    return k.abs(K.mean(y_true - dum*y_pred), axis=-1)

, которые увеличивают положительные значения в 1,1 раза и сравнивают их с истинными значениями. Я получил следующую ошибку:

TypeError: 'Tensor' object does not support item assignment

1 Ответ

0 голосов
/ 06 мая 2018

Функция потерь - это тензор и часть вычислительного графа. Поэтому он должен быть определен с использованием keras backend и не должен вести себя как «обычный» массив numpy.

Этот пример должен работать для вас:

def rmseApprox(y_true, y_pred):
    y_pred_corrected = y_pred*(1.05 + K.sign(y_pred)*0.05)
    return K.abs(K.mean(y_true - y_pred_corrected, axis=-1))

Обратите внимание, что в приведенном выше коде вес для дела y_pred==0 будет 1.05.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...