Я изучаю миграцию стиля изображения с помощью 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.Как я могу исправить эту ошибку?Большое спасибо.