为什么 Keras 不需要自定义损失函数的梯度?

use*_*794 7 python python-3.x deep-learning keras tensorflow

据我了解,为了通过梯度下降更新模型参数,算法需要在某个点计算误差函数 E 对输出 y 的导数:dE/dy。尽管如此,我已经看到,如果您想在 Keras 中使用自定义损失函数,您只需定义 E 而无需定义其导数。我错过了什么?

每个丢失的函数都会有不同的导数,例如:

如果损失函数是均方误差:dE/dy = 2(y_true - y)

如果损失函数是交叉熵:dE/dy = y_true/y

同样,模型怎么可能不问我导数是什么?模型如何仅根据 E 的值计算损失函数关于参数的梯度?

谢谢

小智 4

据我了解,只要您将在 Error 函数中使用的每个运算符都已经有一个预定义的梯度。底层框架将设法计算损失函数的梯度。