我收到错误'太多值要解压缩'使用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)
我做错了什么? 谢谢!
答案 0 :(得分:1)
问题只是fmin_l_bfgs_b
(Documentation)的返回值。它返回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>