Градиент с использованием ошибки функции 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 не поддерживает аргумент 0 типа ArrayBox, который не имеет вызываемого метода sin


person S i    schedule 25.03.2020    source источник


Ответы (1)


Я была такая же проблема. Я думаю это проблема с автоградом. Вы должны импортировать numpy из автограда! Добавьте в начале: импортируйте autograd.numpy как 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))
person Ernesto Costa    schedule 02.06.2020