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.
翻译:我们概述了ensmallen数值优化库,该库提供了一个灵活的C++框架,用于对用户提供的目标函数进行数学优化。支持多种类型的目标函数,包括一般型、可微型、可分型、约束型和类别型。提供了多样化的预构建优化器,包括拟牛顿优化器及多种随机梯度下降变体。底层框架便于实现新的优化器。优化目标函数通常仅需提供一两个C++函数,通过回调函数可轻松指定自定义行为。实证比较表明,ensmallen在提供更多功能的同时性能优于其他框架。该库可通过https://ensmallen.org获取,并采用宽松的BSD许可证进行分发。