} else {
QNmem = flags.QNsize2;
}
if (flags.interimOutputFreq != 0) {
Function monitor = new ResultStoringMonitor(flags.interimOutputFreq, flags.serializeTo);
minimizer = new QNMinimizer(monitor, QNmem, flags.useRobustQN);
} else {
minimizer = new QNMinimizer(QNmem, flags.useRobustQN);
}
((QNMinimizer) minimizer).terminateOnMaxItr(flags.maxQNItr);
((QNMinimizer) minimizer).terminateOnEvalImprovement(flags.terminateOnEvalImprovement);
((QNMinimizer) minimizer).setTerminateOnEvalImprovementNumOfEpoch(flags.terminateOnEvalImprovementNumOfEpoch);
((QNMinimizer) minimizer).suppressTestPrompt(flags.suppressTestDebug);
if (flags.useOWLQN) {
((QNMinimizer) minimizer).useOWLQN(flags.useOWLQN, flags.priorLambda);
}
} else if (flags.useInPlaceSGD) {
SGDMinimizer<DiffFunction> sgdMinimizer =
new SGDMinimizer<DiffFunction>(flags.sigma, flags.SGDPasses, flags.tuneSampleSize, flags.stochasticBatchSize);
if (flags.useSGDtoQN) {
QNMinimizer qnMinimizer;
int QNmem;
if (featurePruneIteration == 0) {
QNmem = flags.QNsize;
} else {
QNmem = flags.QNsize2;
}
if (flags.interimOutputFreq != 0) {
Function monitor = new ResultStoringMonitor(flags.interimOutputFreq, flags.serializeTo);
qnMinimizer = new QNMinimizer(monitor, QNmem, flags.useRobustQN);
} else {
qnMinimizer = new QNMinimizer(QNmem, flags.useRobustQN);
}
minimizer = new HybridMinimizer(sgdMinimizer, qnMinimizer, flags.SGDPasses);