Keras自定义指标具有两个以上的输入

时间:2018-10-03 07:34:34

标签: python keras deep-learning

我有一个VAE模型,已分解为编码器和解码器部分,并实现了自定义损失。一个简化的例子如下

input = Input(shape=(self.image_height, self.image_width, self.image_channel))
encoded = build_encoder(input)
decoded = build_decoder(encoded)
model = Model(input, decoded)

损失(简化)为

loss = K.mean(decoded[0] + decoded[1] + encoded[0]**2)
model.add_loss(loss)
model.compile(optimizer=self.optimizer)

我的主要问题是我想使用Keras的modelcheckpoint函数,然后需要我设置自定义指标。但是,我在网上看到的所有内容都与https://keras.io/metrics/#custom_metrics类似。这仅接受y_true和y_pred,并从那里修改验证损失。我将如何在示例模型中实现该模型,在该模型中,损失是根据多个输入计算的,而不仅仅是“解码”的最终输出?

1 个答案:

答案 0 :(得分:0)

显然,您仍然可以使用变量(keras层),而无需将其传递到自定义损失函数中。

因此,在我的示例中,损失可以计算为

def custom_loss(y_true, y_pred):
    return K.mean(decoded[0] + decoded[1] + encoded[0]**2)

model.compile(optimizer=self.optimizer, loss=custom_loss)

从不使用y_true和y_pred,但是仍然可以调用实际所需的输入(只要它们与自定义损失函数的作用域相同)即可。