Умножение матриц CVXPY в Python 2.7 - PullRequest
0 голосов
/ 14 мая 2019

Я использую код CVXPY здесь . Я хочу запустить его на 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).

1 Ответ

1 голос
/ 15 мая 2019

Вам необходимо использовать операторы cvxpy для переменных cvxpy, другими словами, вы не можете сделать np.matmul с переменной cvxpy. Вы можете просто использовать оператор *. cvxpy будет рассматривать это как умножение матриц. Попробуйте это,

C = np.random.randn(2, n)
C * X

и вы получите:

Expression(AFFINE, UNKNOWN, (2, 3))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...