此梯度计算代码有什么问题?

时间:2019-06-10 03:20:29

标签: python derivative

我正尝试通过两种方式来计算函数在特定点处的梯度:一种是通过分析得出梯度并计算出梯度,另一种是使用af(x + h)-f(x)/ h估计。然后,我可以比较它们,看看哪个更有效。

我已经为两者编写了代码。我确定为第一种方法编写的代码可以正常工作。不幸的是,第二种方法的代码产生了错误的答案。

def cost_gradient_theta1(t,m,x,y):
    c=cost(x,y,t,m)
    grad=[0]*240
    for i in range(240):
        t1=t
        t1[i]=t[i]+0.000001
        grad[i]=(cost(x,y,t1,m)-c)/0.000001
    return grad

在上面,cost是我之前定义的函数,x和y是常量(实际上是0和1s列表的列表),而t和m是我想区分的变量。它们旨在代表每个长度为240的浮标列表。

当我进行测试并将其与“真实”答案进行比较时,第0个坐标结果很好。但是从第一坐标开始,那些偏导数是错误的。

您发现上述代码有什么问题吗?

0 个答案:

没有答案