简体   繁体   English

梯度使用autograd函数错误python

[英]Gradient using autograd function error python

I am trying to compute the gradient of some function using autograd but fails and shows the below error我正在尝试使用 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))

File "C:\\Users\\user\\Desktop\\auto.py", line 23, in f return a[0]*np.sin(2*np.pi*a[1]) + a[2]*np.sin(2*np.pi*a[3])文件“C:\\Users\\user\\Desktop\\auto.py”,第 23 行,在 f 中返回 a[0]*np.sin(2*np.pi*a[1]) + a[2]*np。罪(2*np.pi*a[3])

TypeError: loop of ufunc does not support argument 0 of type ArrayBox which has no callable sin method类型错误:ufunc 循环不支持没有可调用 sin 方法的 ArrayBox 类型的参数 0

I had the same issue.我遇到过同样的问题。 I think this a problem with autograd.我认为这是 autograd 的一个问题。 You have to import numpy from autograd!您必须从 autograd 导入 numpy! Add at the beginning : import autograd.numpy as np在开头添加: 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))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM