使用fmin_l_bfgs_b时由边界引起的错误

时间:2014-11-27 17:56:48

标签: python optimization

我收到错误'太多值要解压缩'使用fmin_l_bfgs_b进行优化时。从stackoverflow我发现我定义边界的方式出了问题。但是,我似乎无法找到正确的方法。

我尝试在下面创建一个最小的工作示例来说明问题。输入是一个28x28x1的灰度图像,其范围从0到1.我看到它因此需要一个784对的列表,每个都有值(0,1)。我尝试使用以下代码实现它:

img = random.uniform(size=(28, 28))
constraintPairs = [(0, 1)]*(28*28)

def func(img):
    return img.mean()

imgOpt, cost = fmin_l_bfgs_b(func, img, approx_grad=1,bounds=constraintPairs)

我做错了什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

问题只是fmin_l_bfgs_bDocumentation)的返回值。它返回3个对象,您只在代码中定义两个。这应该有效:

img = random.uniform(size=(28, 28))
constraintPairs = [(0, 1)]*(28*28)

def func(img):
    return img.mean()

img = reshape(img, (1, 28*28))
imgOpt, cost, info = fmin_l_bfgs_b(func, img, approx_grad=1,bounds=constraintPairs)

imgOpt = reshape(imgOpt, (28,28))

768尺寸是否过多,很难说清楚。如果是这样,您可以考虑对输入图像进行下采样。<​​/ p>