/** * KT, 14.10.2008 * * "optimized" training where termination criterion is later that in "normal" train functions. Optimizer must * converge n successive rounds. This avoid early stopping due to flip on gradient. * * This method is an extention of the respective train method. * * Number of successive rounds can be set by setMinConvRounds(int rounds). Default is set to 5! */ public boolean trainOptimized(InstanceList trainingSet) { return trainOptimized(trainingSet, Integer.MAX_VALUE); }
public boolean trainOptimized(InstanceList training, int numIterationsPerProportion, double[] trainingProportions) { int trainingIteration = 0; assert trainingProportions.length > 0; boolean converged = false; for (int i = 0; i < trainingProportions.length; i++) { assert trainingProportions[i] <= 1.0; logger.info("Training on " + trainingProportions[i] + "% of the data this round."); if (trainingProportions[i] == 1.0) { converged = this.trainOptimized(training, numIterationsPerProportion); } else { converged = this.trainOptimized( training.split(new Random(1), new double[] { trainingProportions[i], 1 - trainingProportions[i] })[0], numIterationsPerProportion); } trainingIteration += numIterationsPerProportion; } return converged; }
b = crfTrainer.trainOptimized(data); LOGGER.info("JNET training: model converged: " + b); } else {
b = crfTrainer.trainOptimized(data); LOGGER.info("JNET training: model converged: " + b); } else {