首页 > 解决方案 > 梯度使用autograd函数错误python

问题描述

我正在尝试使用 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。罪(2*np.pi*a[3])

TypeError: ufunc 循环不支持 ArrayBox 类型的参数 0,它没有可调用的 sin 方法

标签: pythonfunctiongradientautograd

解决方案


我遇到过同样的问题。我认为这是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))

推荐阅读