如何在自定义损失函数中使用属性的单个值

时间:2018-11-19 13:19:05

标签: python-2.7 tensorflow keras loss-function

我正试图用Keras建立一个神经网络。因此,我需要实现一个自定义损失函数,该函数基于示例中的另一个属性来惩罚错误的预测示例。 我真的不知道是否甚至可以在keras中的自定义损失函数内使用单个属性值。 这是我的数据集的标题。

Ereignisart;KONTOPHASE;PRODUKTART;PRODUKT2;BAUSPAREINLAGE;BAUSPARSUMME;BEWERTUNGSZAHL;TREUEOPTIONSSTATUS;ZUTEILUNGSSTATUS;MEHRZUTEILUNG_BETRAG;SPARZINSSATZ;Marktzins;ZEITSCHEIBE;SALDO

第一个属性“ Ereignisart”是我要预测的属性。对于最后一个属性“ SALDO”,我想对加权的“ Ereignisart”的预测进行惩罚。我知道如何编写自定义损失函数并将其赋予属性“ SALDO”(如果有人对此感兴趣,我可以从这里得到:https://datascience.stackexchange.com/questions/28440/custom-conditional-loss-function-in-keras)。但是,如果我按照下面的方式进行操作,则将使用SALDO的每个示例,而不仅是示例的给定值。content of SALDO in debugger

def customLoss(SALDO):
def loss(yTrue, yPred):
    first_log=kBack.log(kBack.clip(yPred, kBack.epsilon(), None) + 1.)
    second_log=kBack.log(kBack.clip(yTrue, kBack.epsilon(), None) + 1.)
    return kBack.mean(kBack.square(first_log - "penalty dependent on SALDO" *second_log)), axis=-1)
return loss

简而言之,我想我要在损失函数中为每对yTrue和yPred使用相应的“ SALDO”值来惩罚基于“ SALDO”的错误预测。

tl; dr 是否可以在自定义的Kears损失函数中使用单个属性值?如果可以,怎么办?

非常感谢

Fabian

0 个答案:

没有答案