【问题标题】:2D fused Lasso with Matlab CVX2D 融合 Lasso 与 Matlab CVX
【发布时间】:2016-09-09 10:11:58
【问题描述】:

我在这里写了一个二维融合套索代码。

[m n] = size(circle);
cvx_begin
    variable theta(m, n);
    minimize( norm(circle-theta, 'fro'));
    subject to
        sum(sum(abs(theta(:,1:n-1)-theta(:,2:n)))) == 0;
        sum(sum(abs(theta(1:m-1,:)-theta(2:m,:)))) == 0;
cvx_end

奇怪的是,节目报告,

在 cvxprob 中(第 28 行)在 cvx_begin 中(第 41 行)使用 cvxprob/newcnstr 时出错(第 192 行)有纪律的凸编程错误:
无效约束:{convex} == {constant}

== 中的错误(第 12 行) b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '==' );

在我删除约束中的abs() 后,程序可以运行,但这不是我期望的约束。

【问题讨论】:

  • 嗯什么。那不是 MATLAB 代码,是吗?
  • 使用MATLAB下的cvx包

标签: matlab machine-learning convex-optimization cvx


【解决方案1】:

我认为您可以尝试将矩阵堆叠成向量,然后使用 L1 范数。在 CVX 中,它只是 norm(variable, 1)。它的作用与您在此处所写的相同:绝对基本差异之和。

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多