我有一个关于使用自定义损失函数的附加目标的问题。
通常我们有 2 个损失函数的输入,我称之为y_predict
和y_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 可以被视为此损失函数的附加目标/输入。有人有处理类似问题的经验吗?谢谢。