Tensorflow 2.0:在训练中结合使用model.add_loss和keras损失函数不起作用

时间:2019-08-31 05:41:26

标签: python tensorflow keras tensorflow2.0 eager-execution

我在VAE部分中了解了TensorFlow 2.0 tutorial。我按照本教程进行操作,但是尽管直接从给定的Google Colab运行笔记本,但是该模型无法按预期运行。结果实际上与教程中的结果相同(即损耗值非常相似),但是如果您查看输出,则会发现该模型根本无法重建输入(即,所有输入都输出相同的图像) 。结合使用model.add_loss()keras.losses时,这似乎是本教程的错误。

Original code

我将MSE损失更改为BinaryCrossentropy,但结果仍然相同。

稍后,我尝试在前向传递中显式计算BinaryCrossentropy损失,然后除了使用KL散度损失外,还使用model.add_loss()

Use only model.add_loss() to calculate the loss

通过这种方式,模型可以实际学习数据,并且输出看起来足够好。

所以我有一个关于model.add_loss()和损失的问题,该函数采用(y_true, y_pred)(即keras.losses)。更新后的代码只有能够计算前向通过中的损失(例如,kl散度或重建损失),才能工作,在模型需要模型真实性的情况下,如何正确组合model.add_loss()keras.losses输出(例如降噪VAE)。

0 个答案:

没有答案