我研究了很多 Keras 自定义损失函数的示例。所有这些都可以概括为“写就行”。即,需要编写带有参数(y_true,y_pred)的函数。但通常 CNN 需要损失函数的导数来进行反向传播。例如,如果您在 Caffe 中实现自定义损失,则必须编写 2 个函数:您需要的损失本身,以及它的反向传播的导数。但在 Keras 中,你似乎不需要第二个。这个魔法是如何运作的?
最佳答案
这个魔法叫做自动微分(AD)。 Keras 构建在符号计算框架之上,即 Theano、TensorFlow 和/或 CNTK。这些框架允许您将损失定义为符号表达式,可以在运行时轻松区分损失,因为整个表示都是符号的。
相比之下,Caffe 是用 C++ 构建的,不使用任何符号表示框架,正如您提到的,它需要在代码中分析指定损失函数及其梯度。
关于machine-learning - Keras 如何反向传播自定义损失函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48104544/