我想出了这段代码:
def DSigmoid(value):
return (math.exp(float(value))/((1+math.exp(float(value)))**2))
Run Code Online (Sandbox Code Playgroud)
a.)这会返回正确的衍生物吗?
b.)这是一种有效的方法吗?
友好的问候,
Daquicker
看起来对我不对.通常,检查这种衍生计算的两种好方法是:
Wolfram Alpha.输入sigmoid函数1/(1+e^(-t)),我们给出了一个与你的匹配的派生的显式公式.为了更直接一点,您可以输入D[1/(1+e^(-t)), t]以获得衍生物而无需所有附加信息.
将其与数值近似值进行比较.在你的情况下,我会假设你已经有了一个功能Sigmoid(value).以
Dapprox = (Sigmoid(value+epsilon) - Sigmoid(value)) / epsilon
对于一些小的epsilon,并将它与你的函数的输出进行比较DSigmoid(value)应该捕获除了最小的错误之外的所有错误.一般来说,在数值上估计导数是最好的方法来仔细检查你是否真正正确地编码了导数,即使你已经确定了公式,并且它几乎不需要任何努力.