tfmri.convex.admm_minimize
tfmri.convex.admm_minimize¶
- admm_minimize(function_f, function_g, operator_a=None, operator_b=None, constant_c=None, penalty=1.0, absolute_tolerance=1e-05, relative_tolerance=1e-05, max_iterations=50, linearized=False, f_prox_kwargs=None, g_prox_kwargs=None, name=None)[source]¶
Applies the ADMM algorithm to minimize a separable convex function.
Minimizes \(f(x) + g(z)\), subject to \(Ax + Bz = c\).
If \(A\), \(B\) and \(c\) are not provided, the constraint defaults to \(x - z = 0\), in which case the problem is equivalent to minimizing \(f(x) + g(x)\).
- Parameters
function_f – A tfmri.convex.ConvexFunction of shape
[..., n]
and real or complex dtype.function_g –
A tfmri.convex.ConvexFunction of shape
[..., m]
and real or complex dtype.operator_a – A
tf.linalg.LinearOperator
of shape[..., p, n]
and real or complex dtype. Defaults to the identity operator.operator_b – A
tf.linalg.LinearOperator
of shape[..., p, m]
and real or complex dtype. Defaults to the negated identity operator.constant_c – A tf.Tensor of shape
[..., p]
. Defaults to 0.0.penalty –
A scalar tf.Tensor. The penalty parameter of the augmented Lagrangian. Also corresponds to the step size of the dual variable update in the scaled form of ADMM.
absolute_tolerance –
A scalar tf.Tensor of real dtype. The absolute tolerance. Defaults to 1e-5.
relative_tolerance –
A scalar tf.Tensor of real dtype. The relative tolerance. Defaults to 1e-5.
max_iterations –
A scalar tf.Tensor of integer dtype. The maximum number of iterations of the ADMM update.
linearized – A boolean. If True, use linearized variant of the ADMM algorithm. Linearized ADMM solves problems of the form \(f(x) + g(Ax)\) and only requires evaluation of the proximal operator of
g(x)
. This is useful when the proximal operator ofg(Ax)
cannot be easily evaluated, but the proximal operator ofg(x)
can. Defaults to False.f_prox_kwargs – A dict. Keyword arguments to pass to the proximal operator of
function_f
during the x-minimization step.g_prox_kwargs –
A dict. Keyword arguments to pass to the proximal operator of
function_g
during the z-minimization step.name – A str. The name of this operation. Defaults to
'admm_minimize'
.
- Returns
A namedtuple containing the following fields
converged
: A boolean tf.Tensor of shape[...]
indicating whether the minimum was found within tolerance for each batch member.dual_residual
: A real tf.Tensor of shape[...]
containing the last tolerance used to evaluate the primal feasibility condition.dual_tolerance
: The dual tolerance.f_primal_variable
: A real or complex tf.Tensor of shape[..., n]
containing the last argument value off
found during the search for each batch member. If the search converged, then this value is the argmin of the objective function, subject to the specified constraint.g_primal_variable
: A real or complex tf.Tensor of shape[..., m]
containing the last argument value ofg
found during the search for each batch member. If the search converged, then this value is the argmin of the objective function, subject to the specified constraint.num_iterations
: A scalar integer tf.Tensor containing the number of iterations of the ADMM update.primal_residual
: A real or complex tf.Tensor of shape[..., p]
containing the last primal residual for each batch member.primal_tolerance
: A real tf.Tensor of shape[...]
containing the last tolerance used to evaluate the primal feasibility condition.scaled_dual_variable
: A tf.Tensor of shape[..., p]
and real or complex dtype containing the last value of the scaled dual variable found during the search.
References
- 1
Boyd, S., Parikh, N., & Chu, E. (2011). Distributed optimization and statistical learning via the alternating direction method of multipliers. Now Publishers Inc.
- Raises
TypeError – If inputs have incompatible types.
ValueError – If inputs are incompatible.