尝试使用非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“
请给我意见书来解决这个问题。