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

Python 使用fmin_l_bfgs_b时由边界引起的错误,python,optimization,Python,Optimization,当使用fmin_l_bfgs_b进行优化时,我得到了错误“太多的值需要解包”。从stackoverflow中,我发现我定义边界的方式有问题。然而,我似乎找不到正确的方法 我试图在下面创建一个最小的工作示例来说明这个问题。输入为28x28x1灰度图像,范围为0到1。因此,在我看来,我需要一个784对的列表,每个都有值(0,1)。我已尝试使用以下代码实现该功能: img = random.uniform(size=(28, 28)) constraintPairs = [(0, 1)]*(28*28

当使用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)
我做错了什么?
谢谢

问题只是
fmin_l_bfgs_b
()的返回值。它返回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个维度是否太多,很难说。如果是这样,你可以考虑下采样输入图像。

谢谢快速响应!然而,我无法让它工作。。我可以试着看看是否可以创建一个MWE。会不会有什么不同于边界?对于梯度近似法来说,784可能是太多的参数了吗?784我们当然有很多参数,但是你得到的误差与此无关。有些地方尺寸不匹配好的,谢谢。我试图编辑我的帖子,所以它有一个非常简单的例子,仍然会产生错误。你能看出什么不对吗?哈哈,很简单。我是Python新手-即使不使用返回的变量,也应该捕获所有返回的变量吗?我很难理解输出中的一些奇怪句子:。我不知道这是否与我们在这里讨论的事情有关?