标记为非凸的凸优化问题
Convex Optimization problem labeled as non convex
我正在使用 cvxpy (1.0.11) 解决凸优化问题。
我认为我遇到的凸问题被标记为非凸问题,因为它不知道参数 alpha
在 [0, 1] 之间。
我从这一行知道这个失败了...
loss = mse + (1-alpha) * lam * (penalty_1 + penalty_2) + alpha * lam * penalty_3
当这一行成功时...
loss = mse + lam * (penalty_1 + penalty_2) + lam * penalty_3
现在超参数是这样参数化的。如果有办法绑定它们,我还没有在 API
的任何地方找到它
alpha = cvx.Parameter(nonneg=True)
alpha.value = 0.5
lam = cvx.Parameter(nonneg=True)
lam.value = 10**(2)
如何告诉 cvxpy
alpha 是 [0, 1] 之间的数字?
我找到了一个非常简单的解决方案。不要将 alpha 设置为参数,只需将其设置为普通浮点数即可。
alpha = 0.5
lam = cvx.Paramter(nonneg=True)
lam.value = 1e2
我正在使用 cvxpy (1.0.11) 解决凸优化问题。
我认为我遇到的凸问题被标记为非凸问题,因为它不知道参数 alpha
在 [0, 1] 之间。
我从这一行知道这个失败了...
loss = mse + (1-alpha) * lam * (penalty_1 + penalty_2) + alpha * lam * penalty_3
当这一行成功时...
loss = mse + lam * (penalty_1 + penalty_2) + lam * penalty_3
现在超参数是这样参数化的。如果有办法绑定它们,我还没有在 API
的任何地方找到它alpha = cvx.Parameter(nonneg=True)
alpha.value = 0.5
lam = cvx.Parameter(nonneg=True)
lam.value = 10**(2)
如何告诉 cvxpy
alpha 是 [0, 1] 之间的数字?
我找到了一个非常简单的解决方案。不要将 alpha 设置为参数,只需将其设置为普通浮点数即可。
alpha = 0.5
lam = cvx.Paramter(nonneg=True)
lam.value = 1e2