我有一个关于使用额外目标进行自定义丢失功能的问题。
通常我们有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可以被视为此损失函数的附加目标/输入。 任何人都有处理类似问题的经验吗?感谢。