在 CVXPY 中广播
Broadcasting in CVXPY
我正在尝试使用 CVXPY 训练带有偏差的线性模型。假设给出 input
和 target
。假设 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 的向量写出 bias
的外积并定义 bias = cvx.Variable((d_out, 1))
就可以了。使用:
input @ beta + np.ones((n_data, 1)) @ bias
我正在尝试使用 CVXPY 训练带有偏差的线性模型。假设给出 input
和 target
。假设 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 的向量写出 bias
的外积并定义 bias = cvx.Variable((d_out, 1))
就可以了。使用:
input @ beta + np.ones((n_data, 1)) @ bias