Попытка использовать функции бэкэнда без keras для пользовательского расчета потерь в моделях keras.
Я пытаюсь заставить мою модель keras cnn использовать пользовательскую функцию потерь (оценка KAppa).Однако, поскольку каппа не определена в бэкенде Keras, мне нужно использовать реализацию каппа, основанную на scikit-learn.Эта функция sklearn принимает массив меток в качестве аргумента, в отличие от внутренних функций keras, которые принимают тензоры.Вызов функции потерь в keras в основном отправляет тензоры Y_pred и Y_true.Я выполнил приведенную ниже реализацию, используя некоторые quide, которые я нашел в Интернете, но я получаю ошибки.
import keras.backend as K
def cohen_kappa_score_func(y_true, y_pred):
sess = tf.Session()
with sess.as_default():
score = cohen_kappa_score(type(y_true.eval()),type(y_pred.eval()), weights='linear')#idea is to convert the tensor to array
sess.close()
return score
#use this later to compile the keras model with custom loss function as
model.compile(optimizer=optimizers.SGD(lr=0.001, momentum=0.9),
loss=cohen_kappa_score_func,
metrics=['categorical_crossentropy', 'mae','categorical_accuracy'])
Это не работает, и я получаю следующую ошибку
"InvalidArgumentError (см. Выше для отслеживания): Выдолжен передать значение для тензора-заполнителя 'density_15_target' с плавающей точкой dtype и формой [?,?] [[node dens_15_target "
Пожалуйста, дайте мне предложения для решения этой проблемы.