numdifftools 与 scipy 最小化

问题描述

我做了一个损失函数,用 scipy.optimize.minimize 最小化。 我有 4 个约束,每个参数一个。 模型收敛并以图形方式显示

enter image description here

接下来我使用 numdifftools 来估计我的工作点 (test.refrigeration.params) 的 Hessian 和梯度,但不知何故我的梯度与最小化不同:

print(test.refrigeration.solution)
print("\n\nnumdifftools says:")
print(nd.Gradient(test.refrigeration.loss_func)(test.refrigeration.params))
np.diag(nd.Hessdiag(test.refrigeration.loss_func)(test.refrigeration.params))
 barrier_parameter: 2.048000000000001e-09
 barrier_tolerance: 2.048000000000001e-09
          cg_niter: 222
      cg_stop_cond: 2
            constr: [array([4.1433835e-08]),array([4.94572523]),array([11.74266572]),array([205.95208536])]
       constr_nfev: [705,705,705]
       constr_nhev: [0,0]
       constr_njev: [0,0]
    constr_penalty: 1.0
  constr_violation: 0.0
    execution_time: 1.0886585712432861
               fun: -1792.2267544952138
              grad: array([ 3.08927155e+01,6.17049604e-06,-1.84790740e-06,1.11133536e-06])
               jac: [array([[1.,0.,0.]]),array([[0.,1.,array([[ 0.,-1.,1.]])]
   lagrangian_grad: array([ 6.75015599e-14,5.92773968e-06,-1.83442944e-06,1.11129922e-06])
           message: '`xtol` termination condition is satisfied.'
            method: 'tr_interior_point'
              nfev: 705
              nhev: 0
               nit: 111
             niter: 111
              njev: 0
        optimality: 5.927739681029311e-06
            status: 2
           success: True
         tr_radius: 1.0000000000000005e-09
                 v: [array([-30.89271545]),array([-2.42756355e-07]),array([-1.34779589e-08]),array([-3.61438995e-11])]
                 x: array([4.14338350e-08,4.94572523e+00,8.25733428e+00,2.05952085e+02])


numdifftools says:
[ -6.66111424 -36.09243261  -1.43150895   1.21950988]
array([[1064.99313683,1078.59848891,-391.34793412,81.81580485],[1078.59848891,1076.86601335,-392.64416079,79.45896535],[-391.34793412,188.84604161,-39.58414431],[  81.81580485,79.45896535,-39.58414431,10.6479105 ]])

为什么 numdifftools 不能在同一点为同一个函数提供相同的梯度?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...