自定义丢失功能的附加目标(或输入)

时间:2018-01-25 21:59:22

标签: python tensorflow keras loss-function

我有一个关于使用额外目标进行自定义丢失功能的问题。

通常我们有2个丢失函数输入,我称之为y_predicty_actual。 MSE功能将是:

def custom_loss(y_true, y_pred):
    return K.mean(K.square(y_pred-y_true))

但是,如果我有第三个输入,例如z(为简单起见,假设z具有相同的y_actual形状)会怎么样?

我在github中找到了一个答案,他们在另一个函数中使用了一个函数,例如:

def custom_loss(z):
    def loss( y_pred, y_true):
        return K.mean(K.square(y_pred-y_true))*(y_pred – z)
    return loss  

然后,我们将模型编译为:

model.compile(loss= custom_loss(z), optimizer='adam')

这很好。但是,当训练数据和有效数据时,“z”是动态的,我遇到了问题。这意味着,我有以下数据:

Train data: x_train, y_train, z_train
Valid data: x_valid, y_valid, z_valid

我想要的损失功能是: 火车损失:

loss = K.mean(K.square(y_pred-y_train)*(y_pred – z_train))

有效损失:

loss = K.mean(K.square(y_pred-y_valid)*(y_pred – z_valid))

z_train和z_valid可以被视为此损失函数的附加目标/输入。 任何人都有处理类似问题的经验吗?感谢。

0 个答案:

没有答案