如何用fmin-ncg计算成本和θ

2024-06-28 20:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习coursera的Andrew NG课程,我想在python上实现同样的逻辑。我在计算成本和θ

scipy.optimize.fmin_ncg

这是一个密码

^{pr2}$

当我尝试运行这个程序时,我得到如下错误/异常

Traceback (most recent call last):
  File "/file/path/without_regression.py", line 78, in <module>
    main()
  File "/file/path/without_regression.py", line 66, in main
    mr = fmin_ncg(compute_cost, initial_theta, compute_gradient, args=(X, y), full_output=True)
  File "/usr/local/anaconda3/envs/ml/lib/python3.6/site-packages/scipy/optimize/optimize.py", line 1400, in fmin_ncg
    callback=callback, **opts)
  File "/usr/local/anaconda3/envs/ml/lib/python3.6/site-packages/scipy/optimize/optimize.py", line 1497, in _minimize_newtoncg
    dri0 = numpy.dot(ri, ri)
ValueError: shapes (3,1) and (3,1) not aligned: 1 (dim 1) != 3 (dim 0)

我不明白这个错误。可能是因为我是初学者这对我来说并不冗长。在

如何使用scipy.optimize.fmin_ncg或任何其他最小化技术,如scipy.optimize.minimize(...)来计算成本和θ?


Tags: pathinpymain错误linescipyfile
1条回答
网友
1楼 · 发布于 2024-06-28 20:10:30

如评论所述:

在没有文档引用的情况下,应该始终使用一维数组。在

Relevant SO-question

import numpy as np
a = np.random.random(size=(3,1))   # NOT TO USE!
a.shape  # (3, 1)
a.ndim   # 2
b = np.random.random(size=3)       # TO USE!
b.shape  # (3,)                    
b.ndim   # 1

这适用于您的x0(如果不使用python列表)和渐变。在

一种快速的破解(渐变中的渐变效果),比如:

^{pr2}$

使代码运行:

Optimization terminated successfully.
         Current function value: 0.203498
         Iterations: 27
         Function evaluations: 71
         Gradient evaluations: 229
         Hessian evaluations: 0
(array([-25.13045417,   0.20598475,   0.2012217 ]), 0.2034978435366513, 71, 229, 0, 0)

额外:在调试过程中,我还检查了梯度本身与数值微分的计算(推荐!),使用x0时看起来不错:

from scipy.optimize import check_grad as cg
print(cg(compute_cost, compute_gradient, initial_theta, X, y))
# 1.24034933954e-05

相关问题 更多 >