approx_fprime - ValueError:使用序列设置数组元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了approx_fprime - ValueError:使用序列设置数组元素相关的知识,希望对你有一定的参考价值。

当我执行approx_fprime时,我收到错误(标题)

import numpy as np
import scipy.optimize as op
def J(x):
    return x*x

xk = np.arange(1,10).reshape(3,3).astype('float32')
print(op.approx_fprime(xk.ravel(), J, 0.01))

我做错了什么?


我必须改变函数,它应该返回一个标量而不是一个向量。

def J(x): 
    return np.sum(x**2)
答案

你使approx_fprime的假设无效:

标量函数梯度的有限差分逼近。

参数:

...

f:可赎回

其功能是确定梯度(偏导数)。应该将xk作为第一个参数,f的其他参数可以在* args中提供。应该返回一个标量,函数的值在xk。

在这种情况下,您将返回一个大小为9的向量。这不是标量函数应返回的内容。原因很简单:

x = np.array([1,2,3])
print((x*x).shape)
# (3,)

以上是关于approx_fprime - ValueError:使用序列设置数组元素的主要内容,如果未能解决你的问题,请参考以下文章

将输出序列化为 JSON - ValueError:检测到循环引用

RS485 Modbus-RTU设备给出的错误是什么?

ValueError: int() 以 10 为基数的无效文字:'' 使用 tkinter

如何提前判断 CountVectorizer 是不是会抛出 ValueError: empty words?

如何在 Keras 中将标量添加到张量或从标量创建张量?

转 python的_winreg的SetValueEx如何使用