gpt4 book ai didi

python - Newton - python 中的 CG 优化,Jacobian 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:23 40 4
gpt4 key购买 nike

我正在尝试用 Python 制作 Newton - CG 优化。我的函数是 f(x,y) =(1-x)^2 + 2(y-x^2)^2。初始点:x = 3,y = 2。这是我的代码:

from scipy.optimize import minimize 

def f(params): #definite function
x, y = params #amount of params
return (1 - x) ** 2 + 2 * (y - x ** 2) ** 2

def jacobian(params): #definite function
x, y = params #amount of params
der = np.zeros_like(x)
der[0] = -8 * x * (-x ** 2 + y) + 2 * x - 2 #derivative by x
der[1] = -4 * x ** 2 + 4 * y #derivative by y
return der

initial_guess = [3, 2] #initial points
result = minimize(f, initial_guess, jac = jacobian, method = 'Newton-CG')

我收到错误 “IndexError:数组索引过多”

当我制作 Nelder - mead 优化、BFGS 时,它们起作用了。所以,问题出在雅可比矩阵上。我觉得 def jacobian 的某个地方是个错误。

最佳答案

错误确实在 jacobian 函数中,您将 der 定义为零,其大小为 x,这是一个标量。而是使用 params:

def jacobian(params): #definite function
x, y = params #amount of params
der = np.zeros_like(params)
der[0] = -8 * x * (-x ** 2 + y) + 2 * x - 2 #derivative by x
der[1] = -4 * x ** 2 + 4 * y #derivative by y
return der

关于python - Newton - python 中的 CG 优化,Jacobian 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57946969/

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