public Optimizer getOptimizer(InstanceList trainingSet) { getOptimizableCRF(trainingSet); // this will set this.mcrf if necessary if (opt == null || ocrf != opt.getOptimizable()) { opt = new LimitedMemoryBFGS(ocrf); // Alternative: opt = new ConjugateGradient (0.001); } return opt; }
public Optimizer getOptimizer (InstanceList trainingSet) { getOptimizableCRF(trainingSet); // this will set this.mcrf if necessary if (opt == null || ocrf != opt.getOptimizable()) opt = new LimitedMemoryBFGS(ocrf); // Alternative: opt = new ConjugateGradient (0.001); return opt; }
public Optimizer getOptimizer (InstanceList trainingSet) { getOptimizableCRF(trainingSet); // this will set this.mcrf if necessary if (opt == null || ocrf != opt.getOptimizable()) opt = new LimitedMemoryBFGS(ocrf); // Alternative: opt = new ConjugateGradient (0.001); return opt; }
assert (trainingSet.size() > 0); getOptimizableCRF(trainingSet); // This will set this.mcrf if necessary
assert (trainingSet.size() > 0); getOptimizableCRF(trainingSet); // This will set this.mcrf if necessary
getOptimizableCRF(trainingSet); // This will set this.mcrf if necessary
double getLikelihood(CRF crf, InstanceList data) { CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); Optimizable.ByGradientValue mcrf = crft.getOptimizableCRF(data); // Do this elaborate thing so that crf.cachedValueStale is forced true double[] params = new double[mcrf.getNumParameters()]; mcrf.getParameters(params); mcrf.setParameters(params); return mcrf.getValue(); }
double getLikelihood(CRF crf, InstanceList data) { CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); Optimizable.ByGradientValue mcrf = crft.getOptimizableCRF(data); // Do this elaborate thing so that crf.cachedValueStale is forced true double[] params = new double[mcrf.getNumParameters()]; mcrf.getParameters(params); mcrf.setParameters(params); return mcrf.getValue(); }
CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); crf.setWeightsDimensionAsIn(one, false); Optimizable.ByGradientValue mcrf = crft.getOptimizableCRF(one); double[] params = new double[mcrf.getNumParameters()]; for (int i = 0; i < params.length; i++) { CRFTrainerByLabelLikelihood crft2 = new CRFTrainerByLabelLikelihood( crf2); double val2 = crft2.getOptimizableCRF(one).getValue(); assertEquals(val1, val2, 1e-5);
CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); crf.setWeightsDimensionAsIn(one, false); Optimizable.ByGradientValue mcrf = crft.getOptimizableCRF(one); double[] params = new double[mcrf.getNumParameters()]; for (int i = 0; i < params.length; i++) { CRFTrainerByLabelLikelihood crft2 = new CRFTrainerByLabelLikelihood( crf2); double val2 = crft2.getOptimizableCRF(one).getValue(); assertEquals(val1, val2, 1e-5);
public void testGetSetParameters() { int inputVocabSize = 100; int numStates = 5; Alphabet inputAlphabet = new Alphabet(); for (int i = 0; i < inputVocabSize; i++) inputAlphabet.lookupIndex("feature" + i); Alphabet outputAlphabet = new Alphabet(); CRF crf = new CRF(inputAlphabet, outputAlphabet); String[] stateNames = new String[numStates]; for (int i = 0; i < numStates; i++) stateNames[i] = "state" + i; crf.addFullyConnectedStates(stateNames); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); Optimizable.ByGradientValue mcrf = crft .getOptimizableCRF(new InstanceList(null)); TestOptimizable.testGetSetParameters(mcrf); }
public void testGetSetParameters() { int inputVocabSize = 100; int numStates = 5; Alphabet inputAlphabet = new Alphabet(); for (int i = 0; i < inputVocabSize; i++) inputAlphabet.lookupIndex("feature" + i); Alphabet outputAlphabet = new Alphabet(); CRF crf = new CRF(inputAlphabet, outputAlphabet); String[] stateNames = new String[numStates]; for (int i = 0; i < numStates; i++) stateNames[i] = "state" + i; crf.addFullyConnectedStates(stateNames); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); Optimizable.ByGradientValue mcrf = crft .getOptimizableCRF(new InstanceList(null)); TestOptimizable.testGetSetParameters(mcrf); }
public void testStartState() { Pipe p = new SerialPipes(new Pipe[] { new LineGroupString2TokenSequence(), new TokenSequenceMatchDataAndTarget(Pattern .compile("^(\\S+) (.*)"), 2, 1), new TokenSequenceParseFeatureString(false), new TokenText(), new TokenSequence2FeatureVectorSequence(true, false), new Target2LabelSequence(), new PrintInputAndTarget(), }); InstanceList data = new InstanceList(p); data.addThruPipe(new LineGroupIterator(new StringReader(toy), Pattern .compile("\n"), true)); CRF crf = new CRF(p, null); crf.print(); crf.addStatesForLabelsConnectedAsIn(data); crf.addStartState(); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); Optimizable.ByGradientValue maxable = crft.getOptimizableCRF(data); assertEquals(-1.3862, maxable.getValue(), 1e-4); crf = new CRF(p, null); crf .addOrderNStates(data, new int[] { 1 }, null, "A", null, null, false); crf.print(); crft = new CRFTrainerByLabelLikelihood(crf); maxable = crft.getOptimizableCRF(data); assertEquals(-3.09104245335831, maxable.getValue(), 1e-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); }
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 testStartState() { Pipe p = new SerialPipes(new Pipe[] { new LineGroupString2TokenSequence(), new TokenSequenceMatchDataAndTarget(Pattern .compile("^(\\S+) (.*)"), 2, 1), new TokenSequenceParseFeatureString(false), new TokenText(), new TokenSequence2FeatureVectorSequence(true, false), new Target2LabelSequence(), new PrintInputAndTarget(), }); InstanceList data = new InstanceList(p); data.addThruPipe(new LineGroupIterator(new StringReader(toy), Pattern .compile("\n"), true)); CRF crf = new CRF(p, null); crf.print(); crf.addStatesForLabelsConnectedAsIn(data); crf.addStartState(); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); Optimizable.ByGradientValue maxable = crft.getOptimizableCRF(data); assertEquals(-1.3862, maxable.getValue(), 1e-4); crf = new CRF(p, null); crf .addOrderNStates(data, new int[] { 1 }, null, "A", null, null, false); crf.print(); crft = new CRFTrainerByLabelLikelihood(crf); maxable = crft.getOptimizableCRF(data); assertEquals(-3.09104245335831, maxable.getValue(), 1e-4); }
.getOptimizableCRF(instances); Optimizable.ByGradientValue optable2 = crft2 .getOptimizableCRF(instances); double val1 = optable1.getValue(); double val2 = optable2.getValue();
.getOptimizableCRF(instances); Optimizable.ByGradientValue optable2 = crft2 .getOptimizableCRF(instances); double val1 = optable1.getValue(); double val2 = optable2.getValue();
public void testPrint() { Pipe p = new SerialPipes(new Pipe[] { new CharSequence2TokenSequence("."), new TokenText(), new TestCRFTokenSequenceRemoveSpaces(), new TokenSequence2FeatureVectorSequence(), new PrintInputAndTarget(), }); InstanceList one = new InstanceList(p); String[] data = new String[] { "ABCDE", }; one.addThruPipe(new ArrayIterator(data)); CRF crf = new CRF(p, null); crf.addFullyConnectedStatesForThreeQuarterLabels(one); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); crf.setWeightsDimensionAsIn(one, false); Optimizable mcrf = crft.getOptimizableCRF(one); double[] params = new double[mcrf.getNumParameters()]; for (int i = 0; i < params.length; i++) { params[i] = i; } mcrf.setParameters(params); crf.print(); }
public void testPrint() { Pipe p = new SerialPipes(new Pipe[] { new CharSequence2TokenSequence("."), new TokenText(), new TestCRFTokenSequenceRemoveSpaces(), new TokenSequence2FeatureVectorSequence(), new PrintInputAndTarget(), }); InstanceList one = new InstanceList(p); String[] data = new String[] { "ABCDE", }; one.addThruPipe(new ArrayIterator(data)); CRF crf = new CRF(p, null); crf.addFullyConnectedStatesForThreeQuarterLabels(one); CRFTrainerByLabelLikelihood crft = new CRFTrainerByLabelLikelihood(crf); crf.setWeightsDimensionAsIn(one, false); Optimizable mcrf = crft.getOptimizableCRF(one); double[] params = new double[mcrf.getNumParameters()]; for (int i = 0; i < params.length; i++) { params[i] = i; } mcrf.setParameters(params); crf.print(); }