【发布时间】:2019-03-15 23:35:27
【问题描述】:
我正在学习使用 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
其中 evaluator 是类 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 的图像。
我该如何修复这个错误?非常感谢。
【问题讨论】:
-
你能把它变成一个可运行的例子吗?
标签: python image optimization scipy keras