功能: 创建求解器

格式:
NetCreateSolver(type, alpha0, alpha1, maxIter, beta1, beta2, beta3)
NetCreateSolver(type, alpha0, alpha1, maxIter, beta1, beta2)
NetCreateSolver(type, alpha0, alpha1, maxIter, beta1)
NetCreateSolver(type, alpha0, alpha1, maxIter)
NetCreateSolver(type, alpha0, alpha1)
NetCreateSolver(type, alpha0)
NetCreateSolver(type)
NetCreateSolver()

type  : 字符串存储需要创建的求解器, 默认为RAdma
alpha0: 初始迭代的学习速率, 默认为1
alpha1: 最终迭代的学习速率, 默认为1
maxIter: 学习速率固定时的最大迭代次数,默认为0
beta1: 算法参数, 默认为0.96
beta2: 算法参数, 默认为0.98
beta3: 算法参数, 默认为0.96

说明:
1. 对于type目前支持如下的求解器
1.1、RAdma
1.2、Adma
1.3、AdaBelief
1.4、AdaBound
1.5、AdaMod
1.6、AdaMax
1.7、AMSBound
1.8、AMSGrad
1.9、Adadelta
1.10、Nadam
1.11、NosAdma
1.12、SGD

2. 函数支持对学习速率进行线性变化, 初始迭代时速率为alpha0, 然后从第1次到maxIter次迭代, 每次学习速率 = 迭代次数 / maxIter * (alpha1 - alpha0) + alpha0, 即学习速率可以随着迭代次数进行线性衰减或增强, 当迭代次数超过maxIter时, 迭代速率稳定在alpha1

3. beta3参数只有当求解器为AdaMod、NosAdma时才生效。如果求解器为NosAdma时, beta3相当于文献的gamma参数, 此时建议取值在0.001或0.01

例子:

solver0 = NetCreateSolver("SGD", 1, 0.6, 1600);//这里创建了一个SGD求解器, 优化中从第0到1600次迭代过程中, 按线性变化的方式学习速率从1变化到0.6, 迭代1600次以后, 学习速率保持在0.6

solver1 = NetCreateSolver("RAdma", 1, 0.5, 2000, 0.8, 0.6);//这里创建了一个RAdma求解器, 优化中从第0到2000次迭代过程中, 按线性变化的方式学习速率从1变化到0.5, 迭代2000次以后, 学习速率保持在0.5, 参数中beta1为0.8, beta2为0.6

