梯度使用autograd函数错误python

问题描述 投票:0回答:1

我试图使用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方法。

python function gradient autograd
1个回答
1
投票

我也有同样的问题。我认为这是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))
© www.soinside.com 2019 - 2024. All rights reserved.