在Keras模型中使用kohannenkappa损失函数

时间:2019-05-13 19:16:21

标签: tensorflow keras scikit-learn tensor

尝试使用非keras后端函数在keras模型中进行自定义损失计算。

我正在尝试使我的keras cnn模型使用自定义损失函数(KAppa得分)。但是,由于在Keras后端中未定义kappas,因此我需要使用基于scikit-learn的kappa实现。此sklearn函数将标签数组作为参数,这与使用tensor的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(请参见上面的回溯):您必须使用dtype float和shape [?,?]输入占位符张量'dense_15_target'的值      [[node density_15_target“

请给我意见书来解决这个问题。

0 个答案:

没有答案