This project contains the code used to produce the numerical result of the paper Newton Acceleration on Manifolds identified by Proximal-Gradient Methods. It has three main package dependencies:
StructuredProximalOperators.jl
implements some nonsmooth functions, their proximity operator, and Riemannian gradients and Hessians;CompositeProblems.jl
implements some additive composite problems, and provide oracles for the smooth and nonsmooth part;StructuredSover.jl
implements solvers designed to tackle composite problems, such as the (Accelerated) Proximal Gradient, or the methods of the above mentioned paper.
The numerical experiments may be run as follows:
- first add the three above packages by running
using Pkg
Pkg.add(url="https://github.com/GillesBareilles/StructuredProximalOperators.jl", rev="v0.1")
Pkg.add(url="https://github.com/GillesBareilles/CompositeProblems.jl", rev="v0.1")
Pkg.add(url="https://github.com/GillesBareilles/StructuredSolvers.jl", rev="v0.1")
Pkg.add(url="https://github.com/GillesBareilles/NewtonRiemannAccel-ProxGrad", rev="v0.1")
- then by running the following commands:
using StructNewtonExperiments
# running each problem separately
run_expe_maxquad(NUMEXPS_OUTDIR = ".");
run_expe_logistic(NUMEXPS_OUTDIR = ".");
run_expe_tracenorm(NUMEXPS_OUTDIR = ".");
# running all problems
run_expes(NUMEXPS_OUTDIR = ".");
Alternatively, the numerical experiments may be run using docker as follows:
- First, build the julia image and install packages: run from a folder containing the
Dockerfile
sudo docker build -t julia_structnewton .
- Then run the docker image by executing the following command, where /ABSOLUTE/PATH/TO/OUTDIR is the absolute path to the directory where the numerical experiments files will be written:
docker run --mount type=bind,source=/ABSOLUTE/PATH/TO/OUTDIR,target=/root/numexps_output -it julia_structnewton
- In the opened julia REPL, run the following
using StructNewtonExperiments
run_expes(NUMEXPS_OUTDIR="/root/numexps_output/")