Как использовать scipy для оптимизации функции - PullRequest
0 голосов
/ 11 октября 2018

Я изучаю миграцию стиля изображения с помощью scipy и keras.Я пытаюсь запустить пример кода, но получаю сообщение об ошибке с scipy.optimize.fmin_l_bfgs_b:

x, min_val, info = fmin_l_bfgs_b(evaluator.loss, x.flatten(),fprime=evaluator.grads, maxfun=20, epsilon=1e-7)

Но я получаю ошибку:

ValueError: failed to initialize intent(inout) array -- expected elsize=8 but got 4

Где оценщик является объектомclass Evaluator

class Evaluator():
    def __init__(self):
        self.loss_value = None
        self.grad_values = None

    def loss(self, x):
        assert self.loss_value is None
        loss_value, grad_values = evalurateLossAndGrads(x)
        self.loss_value = loss_value
        self.grad_values = grad_values
        return self.loss_value

    def grads(self,x ):
        assert self.loss_value is not None
        grad_values = np.copy(self.grad_values)
        self.loss_value = None
        self.grad_values = None
        return grad_values

Метод loss возвращает скаляр, в то время как grads возвращает вектор, длина которого равна числу пикселей в изображении.Имя x представляет собой изображение размером 512 * 512 * 3.Как я могу исправить эту ошибку?Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...