Присвойте значения тензорам в кератах при определении новой функции потерь

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

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 ответ

Функция потерь является тензором и частью вычислительного графа. Следовательно, он должен быть определен с использованием бэкэнда keras и не ведет себя как "обычный" массив 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,

Другие вопросы по тегам