Использование функции потерь Коханненкаппа в моделях Кераса - PullRequest
1 голос
/ 13 мая 2019

Попытка использовать функции бэкэнда без 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 "

Пожалуйста, дайте мне предложения для решения этой проблемы.

...