Как минимизировать целевую функцию, содержащую фробениус и ядерные нормы? - PullRequest
0 голосов
/ 18 февраля 2020

enter image description here

при условии ограничения, что квадрат фробениусовой нормы матрицы Ds должен быть меньше или равен 1.

В настоящее время я использую Библиотека CVXPY для решения целевой функции. Мой пример кода выглядит следующим образом:

import cvxpy as cp 
import numpy as np


np.random.seed(1) 
Xs = np.random.randn(100,4096) 
Ys = np.random.randn(100,300)

# Define and solve the CVXPY problem. 
Ds = cp.Variable(shape=(300,4096))

lamda1 = 1 

obj = cp.Minimize(cp.square(cp.norm(Xs - (Ys*Ds),'fro')) + lamda1*cp.norm(Ds,'nuc')) 
constraints = [cp.square(cp.norm(Ds,'fro')) <= 1]

prob = cp.Problem(obj, constraints) 
prob.solve(solver=cp.SCS, verbose=True)

Консоль выдает ошибку, что

Ошибка решателя 'SCS'. Попробуйте другой решатель или решите с verbose = True для получения дополнительной информации. Попробуйте перецентрировать проблемные данные около 0 и изменить их масштаб, чтобы уменьшить динамический диапазон c.

Я попытался поэкспериментировать с различными решателями, такими как cp.ECOS, но они не оптимизировали функцию.

Есть предложения?

...