我正在使用CVXPY代码here。我想在Python 2.7而不是Python 3上运行它。运算符@似乎可以在Python 3上运行。要使其在python 2.7上运行,我将代码修改为
import cvxpy as cp
import numpy as np
n = 3
p = 3
np.random.seed(1)
C = np.random.randn(n, n)
A = []
b = []
for i in range(p):
A.append(np.random.randn(n, n))
b.append(np.random.randn())
X = cp.Variable((n,n), symmetric=True)
# The operator >> denotes matrix inequality.
constraints = [X >> 0]
prob = cp.Problem(cp.Minimize(np.matmul(C,X)), constraints)
prob.solve()
在这里我使用numpy.matmul而不是@。但是,它给了我这个错误“ ValueError:matmul:输入操作数1没有足够的尺寸”
我的问题是如何在python 2.7(而不是python 3)中成功运行此代码here。
答案 0 :(得分:1)
您需要对cvxpy变量使用cvxpy运算符,换句话说,您不能对cvxpy变量执行np.matmul
。您可以只使用*
运算符。 cvxpy会将其视为矩阵乘法。试试这个,
C = np.random.randn(2, n)
C * X
您将获得:
Expression(AFFINE, UNKNOWN, (2, 3))