【问题标题】:Broadcasting in CVXPYCVXPY 中的广播
【发布时间】:2019-07-13 16:12:00
【问题描述】:

我正在尝试使用 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,)

【问题讨论】:

  • 你可以写bias[None, :]它会广播。支持沿定义的维度广播,但不支持沿未定义的维度广播。

标签: python-3.x cvxpy


【解决方案1】:

bias 的外积写成1 的向量并定义bias = cvx.Variable((d_out, 1)) 就可以了。使用:

input @ beta + np.ones((n_data, 1)) @ bias

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多