用三维Demo看懂各种优化算法,还有C++程序员福音( 五 )

ensmallen除了打包基本优化算法之外,用户还可以使用简单的API轻松添加新的优化器。实现新的优化器只需要有一种方法和一个新的目标函数,通常用一到两个C++函数就能搞定。

安装ensmallen需要满足以下要求:

支持C++ 11的编译器C++线性代数与科学计算库Armadillo数学函数库OpenBLAS或Intel MKL或LAPACKensmallen中的所有内容都在ens命名空间中,因此在代码中放置一个using指令通常很有用 :

usingnamespaceens;

以使用Adam为例,其代码如下:

RosenbrockFunction f;

arma::mat coordinates = f.GetInitialPoint();

Adam optimizer(0.001, 32, 0.9, 0.999, 1e-8, 100000, 1e-5, true);

optimizer.Optimize(f, coordinates);

其中,Adam优化器中参数的顺序依次是:步长、Batch Size、β1、β2、?、最大迭代次数、允许误差、是否以随机方式访问每个函数。

推荐阅读