Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在计算多输出keras模型中的损失时,y_pred和y_true是什么?_Python_Keras_Keras Layer - Fatal编程技术网

Python 在计算多输出keras模型中的损失时,y_pred和y_true是什么?

Python 在计算多输出keras模型中的损失时,y_pred和y_true是什么?,python,keras,keras-layer,Python,Keras,Keras Layer,我目前有一个多输出模型 model=Model(inputs=x1, outputs=[y1,y2]) model.compile((optimizer='sgd', loss=[cutom_loss,'mse']) mse损失函数的y\u pred和y\u true值是多少?对于mse,什么是y_true;它是单独输出y2还是同时输出y1和y2 在我的custom_loss中,我需要分别从两个输出传递y_true和y_pred进行计算 def custom_loss(y1_true, y1

我目前有一个多输出模型

model=Model(inputs=x1, outputs=[y1,y2])
model.compile((optimizer='sgd', loss=[cutom_loss,'mse'])
mse
损失函数的
y\u pred
y\u true
值是多少?对于
mse
,什么是
y_true
;它是单独输出y2还是同时输出y1和y2

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

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

我如何才能做到这一点?

不幸的是,您无法定义“全局”损失函数。 (参见接受答案中的伪代码)

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

如果您希望自定义损耗同时包含y1和y2输出,我可以想出两种方法:

  • 在一个输出中折叠多个输出:如果y1和y2是相似的向量,可以将它们串联起来,以便只有一个输出。然后在自定义丢失中,应用一些索引/切片以分离两个输出
  • 将丢失作为模型的输出:创建自定义网络图 (使用keras functional API和后端)计算损失, 通过将y1_true和y2_true作为网络的输入;通过做 也就是说,您的最终模型将有3个输出;y1_pred、y2_pred和 损失。培训后,您可以丢弃模型的一部分 不再感兴趣(y_真实输入和损失输出)
  • 我记得我在过去也遇到过类似的问题,我选择实施选项2,但这有点痛苦