多输出keras模型的混合损失函数

我有一个keras模型,只有一个输入和两个输出。这两个输出是分开的,因为一个输出具有线性激活(用于线性回归值的估计),另一个输出具有softmax激活(尝试学习由于噪声输入数据而产生的置信度值)。

in_layer = Input((1,))
Hlayer1 = Dense(4,activation='linear')(in_layer)
Hlayer2 = Dense(4,activation='relu')(Hlayer1)
out_1 = Dense(1, activation='linear')(Hlayer2)
out_2 = Dense(1, activation='softmax')(Hlayer2) 
model = Model(inputs=[in_layer], outputs = [out_1,out_2])

我想创建一个混合损失函数的形式:

loss = (1 - out_2) x MSE(out_1) + out_2 x MSE(out_1)

试图捕捉out_2预测答案中的不确定性,以及out_1预测中的实际答案。

我已经尝试过编写自定义损失函数,并且可以让玩具示例在单个输出模型上工作,但对于多输出模型,损失函数似乎是为每个输出单独调用的,所以我很难访问混合损失函数所需的变量。

对于实现这一点有什么建议吗?

谢谢!

转载请注明出处:http://www.chufzs.com/article/20230526/1297193.html