Python cvxpy.multiply() Examples
The following are 6
code examples of cvxpy.multiply().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cvxpy
, or try the search function
.
Example #1
Source File: nuclear_norm_minimization.py From ME-Net with MIT License | 5 votes |
def _constraints(self, X, missing_mask, S, error_tolerance): """ Parameters ---------- X : np.array Data matrix with missing values filled in missing_mask : np.array Boolean array indicating where missing values were S : cvxpy.Variable Representation of solution variable """ ok_mask = ~missing_mask masked_X = cvxpy.multiply(ok_mask, X) masked_S = cvxpy.multiply(ok_mask, S) abs_diff = cvxpy.abs(masked_S - masked_X) close_to_data = abs_diff <= error_tolerance constraints = [close_to_data] if self.require_symmetric_solution: constraints.append(S == S.T) if self.min_value is not None: constraints.append(S >= self.min_value) if self.max_value is not None: constraints.append(S <= self.max_value) return constraints
Example #2
Source File: nuclear_norm_minimization.py From fancyimpute with Apache License 2.0 | 5 votes |
def _constraints(self, X, missing_mask, S, error_tolerance): """ Parameters ---------- X : np.array Data matrix with missing values filled in missing_mask : np.array Boolean array indicating where missing values were S : cvxpy.Variable Representation of solution variable """ ok_mask = ~missing_mask masked_X = cvxpy.multiply(ok_mask, X) masked_S = cvxpy.multiply(ok_mask, S) abs_diff = cvxpy.abs(masked_S - masked_X) close_to_data = abs_diff <= error_tolerance constraints = [close_to_data] if self.require_symmetric_solution: constraints.append(S == S.T) if self.min_value is not None: constraints.append(S >= self.min_value) if self.max_value is not None: constraints.append(S <= self.max_value) return constraints
Example #3
Source File: test_cvxpylayer.py From cvxpylayers with Apache License 2.0 | 5 votes |
def test_logistic_regression(self): np.random.seed(243) N, n = 10, 2 def sigmoid(z): return 1 / (1 + np.exp(-z)) X_np = np.random.randn(N, n) a_true = np.random.randn(n, 1) y_np = np.round(sigmoid(X_np @ a_true + np.random.randn(N, 1) * 0.5)) X_tf = tf.Variable(X_np) lam_tf = tf.Variable(1.0 * tf.ones(1)) a = cp.Variable((n, 1)) X = cp.Parameter((N, n)) lam = cp.Parameter(1, nonneg=True) y = y_np log_likelihood = cp.sum( cp.multiply(y, X @ a) - cp.log_sum_exp(cp.hstack([np.zeros((N, 1)), X @ a]).T, axis=0, keepdims=True).T ) prob = cp.Problem( cp.Minimize(-log_likelihood + lam * cp.sum_squares(a))) fit_logreg = CvxpyLayer(prob, [X, lam], [a]) with tf.GradientTape(persistent=True) as tape: weights = fit_logreg(X_tf, lam_tf, solver_args={'eps': 1e-8})[0] summed = tf.math.reduce_sum(weights) grad_X_tf, grad_lam_tf = tape.gradient(summed, [X_tf, lam_tf]) def f_train(): prob.solve(solver=cp.SCS, eps=1e-8) return np.sum(a.value) numgrad_X_tf, numgrad_lam_tf = numerical_grad( f_train, [X, lam], [X_tf, lam_tf], delta=1e-6) np.testing.assert_allclose(grad_X_tf, numgrad_X_tf, atol=1e-2) np.testing.assert_allclose(grad_lam_tf, numgrad_lam_tf, atol=1e-2)
Example #4
Source File: test_cvxpylayer.py From cvxpylayers with Apache License 2.0 | 5 votes |
def test_logistic_regression(self): set_seed(243) N, n = 10, 2 X_np = np.random.randn(N, n) a_true = np.random.randn(n, 1) y_np = np.round(sigmoid(X_np @ a_true + np.random.randn(N, 1) * 0.5)) X_tch = torch.from_numpy(X_np) X_tch.requires_grad_(True) lam_tch = 0.1 * torch.ones(1, requires_grad=True, dtype=torch.double) a = cp.Variable((n, 1)) X = cp.Parameter((N, n)) lam = cp.Parameter(1, nonneg=True) y = y_np log_likelihood = cp.sum( cp.multiply(y, X @ a) - cp.log_sum_exp(cp.hstack([np.zeros((N, 1)), X @ a]).T, axis=0, keepdims=True).T ) prob = cp.Problem( cp.Minimize(-log_likelihood + lam * cp.sum_squares(a))) fit_logreg = CvxpyLayer(prob, [X, lam], [a]) def layer_eps(*x): return fit_logreg(*x, solver_args={"eps": 1e-12}) torch.autograd.gradcheck(layer_eps, (X_tch, lam_tch), eps=1e-4, atol=1e-3, rtol=1e-3)
Example #5
Source File: linear_model.py From scikit-lego with MIT License | 5 votes |
def _solve(self, sensitive, X, y): n_obs, n_features = X.shape theta = cp.Variable(n_features) y_hat = X @ theta log_likelihood = cp.sum( cp.multiply(y, y_hat) - cp.log_sum_exp( cp.hstack([np.zeros((n_obs, 1)), cp.reshape(y_hat, (n_obs, 1))]), axis=1 ) ) if self.penalty == "l1": log_likelihood -= cp.sum((1 / self.C) * cp.norm(theta[1:])) constraints = self.constraints(y_hat, y, sensitive, n_obs) problem = cp.Problem(cp.Maximize(log_likelihood), constraints) problem.solve(max_iters=self.max_iter) if problem.status in ["infeasible", "unbounded"]: raise ValueError(f"problem was found to be {problem.status}") self.n_iter_ = problem.solver_stats.num_iters if self.fit_intercept: self.coef_ = theta.value[np.newaxis, 1:] self.intercept_ = theta.value[0:1] else: self.coef_ = theta.value[np.newaxis, :] self.intercept_ = np.array([0.0])
Example #6
Source File: OllivierRicci.py From GraphRicciCurvature with Apache License 2.0 | 5 votes |
def _optimal_transportation_distance(x, y, d): """Compute the optimal transportation distance (OTD) of the given density distributions by CVXPY. Parameters ---------- x : (m,) numpy.ndarray Source's density distributions, includes source and source's neighbors. y : (n,) numpy.ndarray Target's density distributions, includes source and source's neighbors. d : (m, n) numpy.ndarray Shortest path matrix. Returns ------- m : float Optimal transportation distance. """ t0 = time.time() rho = cvx.Variable((len(y), len(x))) # the transportation plan rho # objective function d(x,y) * rho * x, need to do element-wise multiply here obj = cvx.Minimize(cvx.sum(cvx.multiply(np.multiply(d.T, x.T), rho))) # \sigma_i rho_{ij}=[1,1,...,1] source_sum = cvx.sum(rho, axis=0, keepdims=True) constrains = [rho * x == y, source_sum == np.ones((1, (len(x)))), 0 <= rho, rho <= 1] prob = cvx.Problem(obj, constrains) m = prob.solve() # change solver here if you want # solve for optimal transportation cost logger.debug("%8f secs for cvxpy. \t#source_nbr: %d, #target_nbr: %d" % (time.time() - t0, len(x), len(y))) return m