import numpy as np
def function2(x):
return np.sum(x**2)
def 偏导(f,x):
h=1e-6
grad=np.zeros_like(x)
for idx in range(x.size):
tmp_val=x[idx]
x[idx]=tmp_val+h
f1=f(x)
x[idx]=tmp_val-h
f2=f(x)
grad[idx]=(f1-f2)/(2*h)
x[idx]=tmp_val
return grad
x=np.array([3.,4.])
print(偏导(function2,x))
这个的结果是[6. 8.]
但如果x换成[[3.],[4.]],结果就变成[[3.0000005],[4.0000005]]了
我发现问题好像出现在 grad[idx]=(f1-f2)/(2*h) 这一行,但这行只是一步除法,后面f1和f2也不是数组,应该和x没什么关系把
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。