【问题标题】:What is the y_pred and y_true when calculating loss in a multi output keras model?在多输出 keras 模型中计算损失时,y_pred 和 y_true 是什么?
【发布时间】:2018-06-30 01:15:59
【问题描述】:

我目前有一个多输出模型

model=Model(inputs=x1, outputs=[y1,y2])
model.compile((optimizer='sgd', loss=[cutom_loss,'mse'])

mse 损失函数的 y_predy_true 值是多少? msey_true 是什么?它是 y2 单独的输出还是 y1 和 y2 的输出?

在我的custom_loss 中,我需要分别从两个输出中传递 y_true 和 y_pred 进行计算

 def custom_loss(y1_true, y1_pred,y2_true, y2_pred):

我该怎么做?

【问题讨论】:

    标签: python keras keras-layer


    【解决方案1】:

    很遗憾,您无法定义“全局”损失函数。 A loss function is always computed only on one output(请参阅已接受答案中的伪代码)。

    在您的示例中,自定义损失将根据 y1_true 和 y1_pred 计算,而 mse 将根据 y2_true 和 y2_pred 计算。

    如果你想要一个包含 y1 和 y2 输出的自定义损失,我可以考虑两种方法:

    1. 在一个输出中折叠多个输出:如果 y1 和 y2 是相似的向量,您可以将它们连接起来,以便只有一个输出。然后在您的自定义损失中应用一些索引/切片以分离两个输出。
    2. 将损失作为模型的输出:创建自定义网络图 (使用 keras 功能 API 和后端)计算损失, 通过将 y1_true 和 y2_true 作为网络的输入;通过做 也就是说,您的最终模型将有 3 个输出; y1_pred、y2_pred 和 失利。训练后,您可以丢弃模型的一部分 不再感兴趣(y_true 输入和损失输出)。

    我记得我过去也遇到过类似的问题,我选择实施选项 2,但这有点痛苦。

    【讨论】:

      猜你喜欢
      • 2020-03-07
      • 2016-04-12
      • 2018-12-30
      • 2018-04-02
      • 2016-12-05
      • 1970-01-01
      • 2020-09-27
      • 2020-09-21
      • 2020-04-07
      相关资源
      最近更新 更多