我试图使用autograd计算某个函数的梯度,但失败了,并显示以下错误。
from autograd import grad
def f(a):
return a[0]*np.sin(2*np.pi*a[1]) + a[2]*np.sin(2*np.pi*a[3])
a=[1.0,1.0,1.0,1.0]
gr = grad(f,0)
print(gr(a))
文件 "C:\Users\user\Desktop\auto.py",第23行,在f中返回a[0]*np.sin(2*np.pi*a[1]) + a[2]*np.sin(2*np.pi*a[3])
类型错误:ufunc的循环不支持ArrayBox类型的参数0,它没有可调用的sin方法。
我也有同样的问题。我认为这是autograd的问题。你必须从autograd导入numpy! 在开头加上: import autograd.numpy as np。
from autograd import grad
import autograd.numpy as np ; <-----------
def f(a):
return a[0]*np.sin(2*np.pi*a[1]) + a[2]*np.sin(2*np.pi*a[3])
a=[1.0,1.0,1.0,1.0]
gr = grad(f,0)
print(gr(a))