ок_праймер - ValueError: установка элемента массива с последовательностью - PullRequest
0 голосов
/ 27 апреля 2018

Я получаю сообщение об ошибке (название) при выполнении approx_fprime

import numpy as np
import scipy.optimize as op
def J(x):
    return x*x

xk = np.arange(1,10).reshape(3,3).astype('float32')
print(op.approx_fprime(xk.ravel(), J, 0.01))

Что я делаю не так?


Мне нужно изменить функцию, которая должна возвращать скаляр вместо вектора.

def J(x): 
    return np.sum(x**2)

1 Ответ

0 голосов
/ 27 апреля 2018

Вы опровергаете предположения ок_файл :

Конечно-разностная аппроксимация градиента скалярной функции .

Параметры:

...

F: вызываемый

Функция определения градиента (частные производные). Должен принимать xk в качестве первого аргумента, другие аргументы для f могут быть указаны в * args. Должен возвращать скаляр, значение функции при xk .

В этом случае вы возвращаете вектор размера 9. Это не то, что должна возвращать скалярная функция. Причина проста:

x = np.array([1,2,3])
print((x*x).shape)
# (3,)
...