gpt4 book ai didi

tensorflow - 机器学习: why the cost function does not need to be derivable?

转载 作者:行者123 更新时间:2023-11-30 09:34:03 24 4
gpt4 key购买 nike

我正在使用 Tensorflow 创建自定义损失函数,这个关于通用机器学习的问题出现在我的脑海中。

我的理解是,优化算法需要一个可导的成本函数来找到/接近最小值,但是我们可以使用不可导的函数,例如绝对函数(当 x=0 时没有导数)。一个更极端的例子,我这​​样定义我的成本函数:

def customLossFun(x,y):
return tf.sign(x)

我预计运行代码时会出现错误,但它实际上有效(它没有学到任何东西,但没有崩溃)。

我错过了什么吗?

最佳答案

您忽略了一个事实,即 sign 函数的梯度是在 Tensorflow 源代码中手动定义的。

如您所见here :

def _SignGrad(op, _):
"""Returns 0."""
x = op.inputs[0]
return array_ops.zeros(array_ops.shape(x), dtype=x.dtype)

tf.sign 的梯度被定义为始终为零。当然,这是导数存在的梯度,因此无处不在,但不为零。

tensorflow 作者决定不检查输入是否为零并在特定情况下抛出异常

关于tensorflow - 机器学习: why the cost function does not need to be derivable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48134194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com