以CVXPY广播

时间:2019-07-13 16:12:00

标签: python-3.x cvxpy

我正在尝试使用CVXPY训练带有偏差的线性模型。假设给出了inputtarget。假设loss是一个cvxpy函数,其第一个参数为凸形。我有以下代码:

import cvxpy as cvx
n_data = 100
d_in = 10
d_out = 10
beta = cvx.Variable(d_in, d_out)
bias = cvx.Variable(d_out)

input = np.random.rand(n_data, d_in)
...
objective = cvx.Minimize(loss(input @ beta + bias, target))
problem = cvx.Problem(objective)

problem.solve()

由于input @ beta + bias出现广播错误:无法广播尺寸(100,10)(10,)

1 个答案:

答案 0 :(得分:2)

使用{1}的向量乘以1的外积并定义bias可以达到目的。使用:

bias = cvx.Variable((d_out, 1))