有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何配置Stanford QNMinimizer以获得与scipy类似的结果。优化最小化LBFGSB

我想从Stanford Core NLP库中配置QN Minimizer,以获得与scipy optimize L-BFGS-B实现类似的优化结果,或者获得适用于大多数情况的标准L-BFSG配置。我将标准参数设置如下:

我想复制的python示例:

scipy.optimize.minimize(neuralNetworkCost, input_theta, method = 'L-BFGS-B', jac = True)

我的朋友尝试在Java中执行同样的操作:

QNMinimizer qn = new QNMinimizer(10,true) ;
qn.terminateOnMaxItr(batch_iterations);
//qn.setM(10);
output = qn.minimize(neuralNetworkCost, 1e-5, input,15000);

我需要的是一个可靠的通用L-BFSG配置,适合解决大多数问题

我也不确定是否需要为标准L-BFGS配置设置以下参数:

useAveImprovement = ?;
useRelativeNorm = ?;
useNumericalZero = ?;
useEvalImprovement = ?; 

提前谢谢你的帮助,我是这个领域的新手

参考资料: Stanford Core NLP QNMinimizer: http://nlp.stanford.edu/nlp/javadoc/javanlp-3.5.2/edu/stanford/nlp/optimization/QNMinimizer.html#setM-int- https://github.com/stanfordnlp/CoreNLP/blob/master/src/edu/stanford/nlp/optimization/QNMinimizer.java

Scipy优化L-BFGS-B: http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.fmin_l_bfgs_b.html

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    你所拥有的应该很好。(你真的有什么问题吗?)

    在max iterations和max function evaluation上同时设置termination可能有些过分,因此您可能会忽略qn.minimize()的最后一个参数,但从文档中可以看出,scipy确实使用了这两个参数,默认值为15000

    一般来说,使用robustOptions(第二个参数是true)应该给出一个可靠的极小值,类似于scipy的pgtol收敛标准。其他选择是针对特殊情况,或者只是试验它们的工作方式