We overview the ensmallen numerical optimization library, which provides a flexible C++ framework for mathematical optimization of user-supplied objective functions. Many types of objective functions are supported, including general, differentiable, separable, constrained, and categorical. A diverse set of pre-built optimizers is provided, including Quasi-Newton optimizers and many variants of Stochastic Gradient Descent. The underlying framework facilitates the implementation of new optimizers. Optimization of an objective function typically requires supplying only one or two C++ functions. Custom behavior can be easily specified via callback functions. Empirical comparisons show that ensmallen outperforms other frameworks while providing more functionality. The library is available at https://ensmallen.org and is distributed under the permissive BSD license.
翻译:我们概述了小型数字优化图书馆,它为用户提供的客观功能的数学优化提供了一个灵活的C++框架,许多类型的客观功能都得到支持,包括一般的、不同的、可区分的、可分的、受限制的和绝对的。提供了一套不同的预建优化设备,包括Qasi-Newton优化器和斯托克梯底层的许多变体。基本框架有利于实施新的优化设备。优化一个客观功能通常只需要提供一两个C++功能。习惯行为可以通过回调功能轻易加以说明。Empicical对比显示,在提供更多功能的同时,小于其他框架。图书馆可在 https://enmillen.org 上查阅,并按允许的 BSD 许可证分发。