при условии ограничения, что квадрат фробениусовой нормы матрицы 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, но они не оптимизировали функцию.
Есть предложения?