Accelerated Bregman Proximal Gradient Methods
A Python package of accelerated first-order algorithms for solving relatively-smooth convex optimization problems
minimize { f(x) + P(x) | x in C }
with a reference function h(x), where C is a closed convex set and
- h(x) is convex and essentially smooth on C;
- f(x) is convex and differentiable, and L-smooth relative to h(x), that is, f(x)-L*h(x) is convex;
- P(x) is convex and closed (lower semi-continuous).
Implemented algorithms in HRX2018:
- BPG(Bregman proximal gradient) method with line search option
- ABPG (Accelerated BPG) method
- ABPG-expo (ABPG with exponent adaption)
- ABPG-gain (ABPG with gain adaption)
- ABDA (Accelerated Bregman dual averaging) method
Additional algorithms for solving D-Optimal Experiment Design problems:
- D_opt_FW (basic Frank-Wolfe method)
- D_opt_FW_away (Frank-Wolfe method with away steps)
Install
Clone or fork from GitHub. Or install from PyPI:
pip install accbpg
Usage
Example: generate a random instance of D-optimal design problem and solve it using two different methods.
import accbpg
# generate a random instance of D-optimal design problem of size 80 by 200
f, h, L, x0 = accbpg.D_opt_design(80, 200)
# solve the problem instance using BPG with line search
x1, F1, G1, T1 = accbpg.BPG(f, h, L, x0, maxitrs=1000, verbskip=100)
# solve it again using ABPG with gamma=2
x2, F2, G2, T2 = accbpg.ABPG(f, h, L, x0, gamma=2, maxitrs=1000, verbskip=100)
# solve it again using adaptive variant of ABPG with gamma=2
x3, F3, G3, _, _, T3 = accbpg.ABPG_gain(f, h, L, x0, gamma=2, maxitrs=1000, verbskip=100)
D-optimal experiment design problems can be constructed from files (LIBSVM format) directly using
f, h, L, X0 = accbpg.D_opt_libsvm(filename)
All algorithms can work with customized functions f(x) and h(x), and an example is given in this Python file.
Additional examples
-
A complete example with visualization is given in this Jupyter Notebook.
-
All examples in HRX2018 can be found in the ipynb directory.
-
Comparisons with the Frank-Wolfe method can be found in ipynb/ABPGvsFW.
Release files for accbpg 0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| accbpg-0.2.tar.gz | 15.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| accbpg-0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.4 kB
Release files / accbpg-0.2.tar.gz
| Download URL | accbpg-0.2.tar.gz |
|---|---|
| Size | 15.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e0681dc59393df908ed5f210abae4482f5969639f67f5ee9b207ca6797b9e0ba
|
|
BLAKE2b-256 checksum How to use checksums |
1f0cc6d891139e70bdf34e6166d5f595f176b661589138681f392ca9edf5942e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1
|
Release files / accbpg-0.2-py3-none-any.whl
| Download URL | accbpg-0.2-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3acfbb9ea9c7a11166e6a48a5dbafe0f31f7de8c79e1c3acb6916df103962086
|
|
BLAKE2b-256 checksum How to use checksums |
317cbdd2adaf52dedf76bd809b303414ea821827260ebefebd7a815ca3d1a724
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1
|