Присвойте значения тензорам в кератах при определении новой функции потерь
Я пытаюсь определить функцию потерь в Керасе
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
,