python - 梯度使用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 方法
解决方案
我遇到过同样的问题。我认为这是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))
推荐阅读
- c++ - 如何使用将字符串拆分为for循环中的变量的程序
- javascript - 反应:获取状态变量是未定义的错误
- c++ - 如何使用 redis-plus-plus 存储二进制数据,就像我想存储结构一样?@for_stack?
- c# - 发送电子邮件时 smtp 连接出错
- python - 如何为输出绘制图形,将第一个 col 作为标签,将第二个 col 作为值
- java - 将反应流拆分为 2 个流,然后使用关联 ID 再次合并它们?
- angular - Angular 应用程序也不显示任何内容,但应用程序未加载
- javascript - 如何解释在对象上使用 tostring() 的结果
- html - 用 CSS 编写雨云
- python - 如何在 qt 设计器中创建切换开关按钮?