本文整理汇总了Python中cvxpy.multiply方法的典型用法代码示例。如果您正苦于以下问题:Python cvxpy.multiply方法的具体用法?Python cvxpy.multiply怎么用?Python cvxpy.multiply使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cvxpy
的用法示例。
在下文中一共展示了cvxpy.multiply方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_logistic_regression
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import multiply [as 别名]
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)
示例2: _solve
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import multiply [as 别名]
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])
示例3: _optimal_transportation_distance
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import multiply [as 别名]
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
示例4: _constraints
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import multiply [as 别名]
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
示例5: test_logistic_regression
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import multiply [as 别名]
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)