gpt4 book ai didi

python - 如何使用 scipy 优化函数

转载 作者:行者123 更新时间:2023-12-01 08:56:19 27 4
gpt4 key购买 nike

我正在学习使用 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的图像。我该如何修复这个错误?非常感谢。

最佳答案

此错误是因为 scipy 的 L-BFGS 求解器的 fortran 实现需要 8 字节而不是 4 字节 float 。它要求您将初始 x 和渐变转换为 float64 数据类型。

关于python - 如何使用 scipy 优化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52750690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com