mlpack/ensmallen
mlpack/ensmallen has 814 GitHub stars and 142 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 23:19 UTC. Last push 2026-11-07.
A header-only C++ library for numerical optimization --
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Originalensmallen is a high-quality C++ library for non-linear numerical optimization.
ensmallen provides many types of optimizers that can be used for virtually any numerical optimization task. This includes gradient descent techniques, gradient-free optimizers, and constrained optimization. Examples include L-BFGS, SGD, CMAES and Simulated Annealing. ensmallen also allows optional callbacks to customize the optimization process.
Documentation and downloads: https://ensmallen.org
Requirements
- C++ compiler with C++14 support
- Armadillo (https://arma.sourceforge.net), version 10.8.2 or later
- OpenBLAS or Intel MKL or LAPACK (see Armadillo site for details)
Installation
ensmallen can be installed in several ways: either manually or via cmake, with or without root access.
The cmake based installation will check the requirements and optionally build the tests. If cmake 3.3 (or a later version) is not already available on your system, it can be obtained from cmake.org.
Example cmake based installation with root access:
mkdir build
cd build
cmake ..
sudo make install
Example cmake based installation without root access,
installing into /home/blah/ (adapt as required):
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/home/blah/
make install
The above will create a directory named /home/blah/include/
and place all ensmallen headers there.
To optionally build and run the tests (after running cmake as above), use the following additional commands:
make ensmallen_tests
./ensmallen_tests --durations yes
Manual installation involves simply copying the include/ensmallen.hpp header
and the associated include/ensmallen_bits directory to a location
such as /usr/include/ which is searched by your C++ compiler.
If you can't use sudo or don't have write access to /usr/include/,
use a directory within your own home directory (eg. /home/blah/include/).
Example Compilation
If you have installed ensmallen in a standard location such as /usr/include/:
g++ prog.cpp -o prog -O2 -larmadillo
If you have installed ensmallen in a non-standard location,
such as /home/blah/include/, you will need to make sure
that your C++ compiler searches /home/blah/include/
by explicitly specifying the directory as an argument/option.
For example, using the -I switch in gcc and clang:
g++ prog.cpp -o prog -O2 -I /home/blah/include/ -larmadillo
Example Optimization
See example.cpp for example usage of the L-BFGS optimizer
in a linear regression setting.
License
Unless stated otherwise, the source code for ensmallen is licensed under the 3-clause BSD license (the "License"). A copy of the License is included in the "LICENSE.txt" file. You may also obtain a copy of the License at http://opensource.org/licenses/BSD-3-Clause
Citation
Please cite the following paper if you use ensmallen in your research and/or software. Citations are useful for the continued development and maintenance of the library.
- Ryan R. Curtin, Marcus Edel, Rahul Ganesh Prabhu, Suryoday Basak, Zhihao Lou, Conrad Sanderson. The ensmallen library for flexible numerical optimization. Journal of Machine Learning Research, Vol. 22, No. 166, 2021.
@article{ensmallen_JMLR_2021,
author = {Ryan R. Curtin and Marcus Edel and Rahul Ganesh Prabhu and Suryoday Basak and Zhihao Lou and Conrad Sanderson},
title = {The ensmallen library for flexible numerical optimization},
journal = {Journal of Machine Learning Research},
year = {2021},
volume = {22},
number = {166},
pages = {1--6},
url = {http://jmlr.org/papers/v22/20-416.html}
}
Developers and Contributors
- Ryan Curtin
- Dongryeol Lee
- Marcus Edel
- Sumedh Ghaisas
- Siddharth Agrawal
- Stephen Tu
- Shikhar Bhardwaj
- Vivek Pal
- Sourabh Varshney
- Chenzhe Diao
- Abhinav Moudgil
- Konstantin Sidorov
- Kirill Mishchenko
- Kartik Nighania
- Haritha Nair
- Moksh Jain
- Abhishek Laddha
- Arun Reddy
- Nishant Mehta
- Trironk Kiatkungwanglai
- Vasanth Kalingeri
- Zhihao Lou
- Conrad Sanderson
- Dan Timson
- N Rajiv Vaidyanathan
- Roberto Hueso
- Sayan Goswami
Explore related projects
tensorflow/tensorflow
An Open Source Machine Learning Framework for Everyone
201,427 starshuggingface/transformers
🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.
168,711 starsAUTOMATIC1111/stable-diffusion-webui
Stable Diffusion web UI
165,274 starsComfy-Org/ComfyUI
The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. The fastest local inference engine in the world.
146,024 stars