minimize_constr(method=’frank-wolfe’)

torchmin.constrained.frankwolfe._minimize_frankwolfe(fun, x0, constr='tracenorm', t=None, max_iter=None, gtol=1e-05, normp=inf, callback=None, disp=0)[source]

Minimize a scalar function of a matrix with Frank-Wolfe (a.k.a. conditional gradient).

The algorithm is described in 1. The following constraints are currently supported:

  • Trace norm. The matrix is constrained to have trace norm (a.k.a. nuclear norm) less than t.

  • Birkhoff polytope. The matrix is constrained to lie in the Birkhoff polytope, i.e. over the space of doubly stochastic matrices. Requires a square matrix.

Parameters
  • fun (callable) – Scalar objective function to minimize.

  • x0 (Tensor) – Initialization point.

  • constr (str) – Which constraint to use. Must be either ‘tracenorm’ or ‘birkhoff’.

  • t (float, optional) – Maximum allowed trace norm. Required when using the ‘tracenorm’ constr; otherwise unused.

  • max_iter (int, optional) – Maximum number of iterations to perform.

  • gtol (float) – Termination tolerance on 1st-order optimality (gradient norm).

  • normp (float) – The norm type to use for termination conditions. Can be any value supported by torch.norm().

  • callback (callable, optional) – Function to call after each iteration with the current parameter state, e.g. callback(x).

  • disp (int or bool) – Display (verbosity) level. Set to >0 to print status messages.

Returns

result – Result of the optimization routine.

Return type

OptimizeResult

References

1

Martin Jaggi, “Revisiting Frank-Wolfe: Projection-Free Sparse Convex Optimization”, ICML 2013.