1

我有一个关于使用自定义损失函数的附加目标的问题。

通常我们有 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 可以被视为此损失函数的附加目标/输入。有人有处理类似问题的经验吗?谢谢。

4

0 回答 0