Keras自定义损失“无”梯度

时间:2019-06-01 21:03:21

标签: keras

我目前正在尝试为keras二进制分类模型创建自定义损失函数。 TP,TN,FP,FN各自都有不同程度的利润减少。

FN使利润减少72 $ TP将利润减少28.2 $ TN将利润减少0 $ FP将利润减少5.7 $

电流损耗函数如下所示,但给出以下错误。

def custom_loss(y_true, y_pred):
    TP = K.all(K.stack([y_true, y_pred], axis=0), axis=0)
    # FP = K.all(K.stack([K.square(tensorflow.subtract(y_true, 1)), y_pred]))
    # FN = K.all(K.stack([y_true, K.square(y_pred-K.constant(1))]))

    return K.sum(K.switch(TP, K.ones_like(y_true), K.zeros_like(y_true))*K.constant(28.2))



ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.

我通常了解错误的含义,但是我不知道如何对损失函数建模,以使所使用的所有操作都具有梯度!=无

我找到了各种有关如何建模自定义损失函数的资源,但没有设法使它们适应我的“固定成本”函数

0 个答案:

没有答案