【发布时间】:2019-10-04 04:48:47
【问题描述】:
我目前正在尝试在 Keras 中构建具有三种不同损失函数的深度学习模型。第一个损失函数是典型的均方误差损失。其他两个损失函数是我自己构建的,它发现了从输入图像和输出图像进行的计算之间的差异(这段代码是我正在做的简化版本)。
def p_autoencoder_loss(yTrue,yPred):
def loss(yTrue, y_Pred):
return K.mean(K.square(yTrue - yPred), axis=-1)
def a(image):
return K.mean(K.sin(image))
def b(image):
return K.sqrt(K.cos(image))
a_pred = a(yPred)
a_true = a(yTrue)
b_pred = b(yPred)
b_true = b(yTrue)
empirical_loss = (loss(yTrue, yPred))
a_loss = K.mean(K.square(a_true - a_pred))
b_loss = K.mean(K.square(b_true - b_pred))
final_loss = K.mean(empirical_loss + a_loss + b_loss)
return final_loss
但是,当我使用此损失函数进行训练时,它根本无法很好地收敛。我想尝试的是分别最小化三个损失函数,而不是通过将它们添加到一个损失函数中。
我基本上想在这里Tensorflow: Multiple loss functions vs Multiple training ops 做第二个选项,但是以 Keras 的形式。我还希望损失函数彼此独立。有没有简单的方法来做到这一点?
【问题讨论】:
标签: tensorflow keras