python - 如何将 2 矩阵放入 scipy.optimize.minimize?

标签 python optimization scipy minimize

我使用 scipy.optimize.minimize 函数。 我的目的是获取 w,z 最小化 f(w,z)

wz 都是 nm 矩阵:

[[1,1,1,1],
 [2,2,2,2]]

f(w,z)是接收参数w和z。

我已经尝试过下面给出的表格:

def f(x):
   w = x[0]
   z = x[1]
   ...

minimize(f, [w,z])

但是,最小化效果不佳。

将两个矩阵(n 乘以 m)放入 scipy.optimize.minimize 的有效形式是什么?

最佳答案

Optimize 需要一个一维向量来优化。你走在正确的轨道上。您需要将您的参数扁平化为最小化,然后在f 中,从x = np.reshape(x, (2, m, n)),然后拉出 wz,您应该开始工作了。

我以前遇到过这个问题。例如,同时优化多个不同类中的部分向量。我通常会得到一个将事物映射到一维向量的函数,然后是另一个将数据拉回到对象中的函数,这样我就可以评估成本函数。如:

def toVector(w, z):
    assert w.shape == (2, 4)
    assert z.shape == (2, 4)
    return np.hstack([w.flatten(), z.flatten()])

def toWZ(vec):
    assert vec.shape == (2*2*4,)
    return vec[:2*4].reshape(2,4), vec[2*4:].reshape(2,4)

def doOptimization(f_of_w_z, w0, z0):
    def f(x): 
        w, z = toWZ(x)
        return f_of_w_z(w, z)

    result = minimize(f, toVec(w0, z0))
    # Different optimize functions return their
    # vector result differently. In this case it's result.x:
    result.x = toWZ(result.x) 
    return result

关于python - 如何将 2 矩阵放入 scipy.optimize.minimize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31292374/

相关文章:

c++ - 减少临时对象到就地施工的分配

python - scipy.sparse.hstack [ValueError : blocks must be 2-D]

python - 跨轴应用蒙版后,Numpy 数组变形

python - 是否有基本追踪求解器的 python 实现?

javascript - 为什么连接空字符比 .toString() 更快?

python - Scipy Weibull CDF 计算

python - 点集之间的成对位移向量

python - 等待 paramiko exec_command 完成

python - 当敌人出现时 Pygame 崩溃

Python os.system 调用慢约 1/2 秒