@@ -6,7 +6,7 @@ Differentiable regularized prediction function `ŷ(θ) = argmax_{y ∈ C} {θ
66Relies on the Frank-Wolfe algorithm to minimize a concave objective on a polytope.
77
88# Fields
9- - `maximizer::M`: linear maximization oracle `θ -> argmax_{x ∈ C} θᵀx` which implicitly defines the polytope `C`
9+ - `maximizer::M`: linear maximization oracle `θ -> argmax_{x ∈ C} θᵀx`, implicitly defines the polytope `C`
1010- `Ω::RF`: regularization function `Ω(y)`
1111- `Ω_grad::RG`: gradient of the regularization function `∇Ω(y)`
1212- `f::F`: objective function `f(x, θ) = Ω(y) - θᵀy` minimized by Frank-Wolfe (computed automatically)
@@ -34,17 +34,32 @@ function Base.show(io::IO, regularized::RegularizedGeneric)
3434 return print (io, " RegularizedGeneric($maximizer , $Ω , $Ω_grad , $linear_solver )" )
3535end
3636
37- """
38- RegularizedGeneric(maximizer, Ω, Ω_grad[; linear_solver=gmres])
39-
40- Short form constructor with a default linear solver.
41- """
42- function RegularizedGeneric (maximizer, Ω, Ω_grad; linear_solver= gmres)
37+ function RegularizedGeneric (maximizer, Ω, Ω_grad, linear_solver= gmres)
4338 f (y, θ) = Ω (y) - dot (θ, y)
4439 f_grad1 (y, θ) = Ω_grad (y) - θ
4540 return RegularizedGeneric (maximizer, Ω, Ω_grad, f, f_grad1, linear_solver)
4641end
4742
43+ """
44+ RegularizedGeneric(maximizer[; Ω, Ω_grad, linear_solver=gmres])
45+
46+ Shorter constructor with defaults.
47+ """
48+ function RegularizedGeneric (
49+ maximizer;
50+ Ω= zero_regularization,
51+ Ω_grad= zero_gradient,
52+ omega= nothing ,
53+ omega_grad= nothing ,
54+ linear_solver= gmres,
55+ )
56+ if isnothing (omega) || isnothing (omega_grad)
57+ return RegularizedGeneric (maximizer, Ω, Ω_grad, linear_solver)
58+ else
59+ return RegularizedGeneric (maximizer, omega, omega_grad, linear_solver)
60+ end
61+ end
62+
4863@traitimpl IsRegularized{RegularizedGeneric}
4964
5065function compute_regularization (regularized:: RegularizedGeneric , y:: AbstractArray{<:Real} )
0 commit comments