【发布时间】:2017-12-07 17:58:17
【问题描述】:
我想在 Keras 中实现一个自定义损失,它将最后一个仿射层作为输入。这是Hariharan et al. 2017中描述的SGM损失
这意味着损失函数不仅获得了y_true和y_predict作为参数,还获得了最后一个仿射层。这如何在 keras 中实现?
【问题讨论】:
-
把你现在拥有的东西贴出来很有用,这也能吸引人们提供更多帮助!
我想在 Keras 中实现一个自定义损失,它将最后一个仿射层作为输入。这是Hariharan et al. 2017中描述的SGM损失
这意味着损失函数不仅获得了y_true和y_predict作为参数,还获得了最后一个仿射层。这如何在 keras 中实现?
【问题讨论】:
您可以创建自己的自定义层并在call 方法中调用self.add_loss。该值应该是批次中样本的平均标量张量。然后,当您编译模型时,这将被添加到通常的损失函数(y_true 和 y_pred 的函数)中。如果不需要,您还可以选择指定loss=None。
参见例如https://github.com/fchollet/keras/blob/master/examples/variational_autoencoder.py,其中将 KL 散度添加到伯努利负对数似然以形成变分自动编码器的负证据下限损失。
【讨论】: