public boolean trainIncremental (InstanceList training) { return train (training, Integer.MAX_VALUE); }
LOGGER.info("JNET training: model converged: " + b); } else { crfTrainer.train(data, number_iterations); LOGGER.info("JNET training: with iterations = " + number_iterations);
public boolean trainIncremental (InstanceList training) { return train (training, Integer.MAX_VALUE); }
public boolean trainIncremental(InstanceList training) { return train(training, Integer.MAX_VALUE); }
/** * Train a CRF on various-sized subsets of the data. This method is typically used to accelerate training by * quickly getting to reasonable parameters on only a subset of the parameters first, then on progressively more data. * @param training The training Instances. * @param numIterationsPerProportion Maximum number of Maximizer iterations per training proportion. * @param trainingProportions If non-null, train on increasingly * larger portions of the data, e.g. new double[] {0.2, 0.5, 1.0}. This can sometimes speedup convergence. * Be sure to end in 1.0 if you want to train on all the data in the end. * @return True if training has converged. */ public boolean train (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.train (training, numIterationsPerProportion); else converged = this.train (training.split (new Random(1), new double[] {trainingProportions[i], 1-trainingProportions[i]})[0], numIterationsPerProportion); trainingIteration += numIterationsPerProportion; } return converged; }
/** * Train a CRF on various-sized subsets of the data. This method is typically used to accelerate training by * quickly getting to reasonable parameters on only a subset of the parameters first, then on progressively more data. * @param training The training Instances. * @param numIterationsPerProportion Maximum number of Maximizer iterations per training proportion. * @param trainingProportions If non-null, train on increasingly * larger portions of the data, e.g. new double[] {0.2, 0.5, 1.0}. This can sometimes speedup convergence. * Be sure to end in 1.0 if you want to train on all the data in the end. * @return True if training has converged. */ public boolean train (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.train (training, numIterationsPerProportion); else converged = this.train (training.split (new Random(1), new double[] {trainingProportions[i], 1-trainingProportions[i]})[0], numIterationsPerProportion); trainingIteration += numIterationsPerProportion; } return converged; }
logger.info("Training on " + trainingProportions[i] + "% of the data this round."); if (trainingProportions[i] == 1.0) { converged = this.train(training, numIterationsPerProportion); } else { converged = this.train( training.split(new Random(1), new double[] { trainingProportions[i], 1 - trainingProportions[i] })[0],
trainer.train(trainingInstances);
trainer.train(trainingInstances);
trainer.train(trainingInstances);
/** * do the training * * @param instList * @param myPipe */ void train(final InstanceList instList, final Pipe myPipe) { final long s1 = System.currentTimeMillis(); // set up model model = new CRF(myPipe, null); model.addStatesForLabelsConnectedAsIn(instList); // get trainer final CRFTrainerByLabelLikelihood crfTrainer = new CRFTrainerByLabelLikelihood( model); // do the training with unlimited amount of iterations // --> refrained from using modified version of mallet; // it's now the original source final boolean b = crfTrainer.train(instList); LOGGER.info("Tokenizer training: model converged: " + b); final long s2 = System.currentTimeMillis(); // stop growth and set trained model.getInputPipe().getDataAlphabet().stopGrowth(); trained = true; LOGGER.debug("train() - training time: " + ((s2 - s1) / 1000) + " sec"); }
public void testDenseFeatureSelection() { Pipe p = makeSpacePredictionPipe(); InstanceList instances = new InstanceList(p); instances.addThruPipe(new ArrayIterator(data)); // Test that dense observations wights aren't added for // "default-feature" edges. CRF crf1 = new CRF(p, null); crf1.addOrderNStates(instances, new int[] { 0 }, null, "start", null, null, true); CRFTrainerByLabelLikelihood crft1 = new CRFTrainerByLabelLikelihood( crf1); crft1.setUseSparseWeights(false); crft1.train(instances, 1); // Set weights dimension int nParams1 = crft1.getOptimizableCRF(instances).getNumParameters(); CRF crf2 = new CRF(p, null); crf2.addOrderNStates(instances, new int[] { 0, 1 }, new boolean[] { false, true }, "start", null, null, true); CRFTrainerByLabelLikelihood crft2 = new CRFTrainerByLabelLikelihood( crf2); crft2.setUseSparseWeights(false); crft2.train(instances, 1); // Set weights dimension int nParams2 = crft2.getOptimizableCRF(instances).getNumParameters(); assertEquals(nParams2, nParams1 + 4); }
public void testDenseFeatureSelection() { Pipe p = makeSpacePredictionPipe(); InstanceList instances = new InstanceList(p); instances.addThruPipe(new ArrayIterator(data)); // Test that dense observations wights aren't added for // "default-feature" edges. CRF crf1 = new CRF(p, null); crf1.addOrderNStates(instances, new int[] { 0 }, null, "start", null, null, true); CRFTrainerByLabelLikelihood crft1 = new CRFTrainerByLabelLikelihood( crf1); crft1.setUseSparseWeights(false); crft1.train(instances, 1); // Set weights dimension int nParams1 = crft1.getOptimizableCRF(instances).getNumParameters(); CRF crf2 = new CRF(p, null); crf2.addOrderNStates(instances, new int[] { 0, 1 }, new boolean[] { false, true }, "start", null, null, true); CRFTrainerByLabelLikelihood crft2 = new CRFTrainerByLabelLikelihood( crf2); crft2.setUseSparseWeights(false); crft2.train(instances, 1); // Set weights dimension int nParams2 = crft2.getOptimizableCRF(instances).getNumParameters(); assertEquals(nParams2, nParams1 + 4); }
trainer.setAddNoFactors(true); trainer.setGaussianPriorVariance(gpv); trainer.train(trainingSet,supIterations);
trainer.setAddNoFactors(true); trainer.setGaussianPriorVariance(gpv); trainer.train(trainingSet,supIterations);
trainer.setAddNoFactors(true); trainer.setGaussianPriorVariance(gpv); trainer.train(trainingSet,supIterations);
TokenAccuracyEvaluator eval = new TokenAccuracyEvaluator (new InstanceList[] {training, testing}, new String[] {"Training", "Testing"}); for (int i = 0; i < 5; i++) { crft.train (training, 1); eval.evaluate(crft);
TokenAccuracyEvaluator eval = new TokenAccuracyEvaluator (new InstanceList[] {training, testing}, new String[] {"Training", "Testing"}); for (int i = 0; i < 5; i++) { crft.train (training, 1); eval.evaluate(crft);
public void testXis() { Pipe p = makeSpacePredictionPipe(); InstanceList instances = new InstanceList(p); instances.addThruPipe(new ArrayIterator(data)); CRF crf1 = new CRF(p, null); crf1.addFullyConnectedStatesForLabels(); CRFTrainerByLabelLikelihood crft1 = new CRFTrainerByLabelLikelihood( crf1); crft1.train(instances, 10); // Let's get some parameters Instance inst = instances.get(0); Sequence input = (Sequence) inst.getData(); SumLatticeDefault lattice = new SumLatticeDefault(crf1, input, (Sequence) inst.getTarget(), null, true); for (int ip = 0; ip < lattice.length() - 1; ip++) { for (int i = 0; i < crf1.numStates(); i++) { Transducer.State state = crf1.getState(i); Transducer.TransitionIterator it = state.transitionIterator( input, ip); double gamma = lattice.getGammaProbability(ip, state); double xiSum = 0; while (it.hasNext()) { Transducer.State dest = it.nextState(); double xi = lattice.getXiProbability(ip, state, dest); xiSum += xi; } assertEquals(gamma, xiSum, 1e-5); } } }
public void testXis() { Pipe p = makeSpacePredictionPipe(); InstanceList instances = new InstanceList(p); instances.addThruPipe(new ArrayIterator(data)); CRF crf1 = new CRF(p, null); crf1.addFullyConnectedStatesForLabels(); CRFTrainerByLabelLikelihood crft1 = new CRFTrainerByLabelLikelihood( crf1); crft1.train(instances, 10); // Let's get some parameters Instance inst = instances.get(0); Sequence input = (Sequence) inst.getData(); SumLatticeDefault lattice = new SumLatticeDefault(crf1, input, (Sequence) inst.getTarget(), null, true); for (int ip = 0; ip < lattice.length() - 1; ip++) { for (int i = 0; i < crf1.numStates(); i++) { Transducer.State state = crf1.getState(i); Transducer.TransitionIterator it = state.transitionIterator( input, ip); double gamma = lattice.getGammaProbability(ip, state); double xiSum = 0; while (it.hasNext()) { Transducer.State dest = it.nextState(); double xi = lattice.getXiProbability(ip, state, dest); xiSum += xi; } assertEquals(gamma, xiSum, 1e-5); } } }