public Quadratic (double a, double b, double c) { parameters = new DenseVector (1); this.a = a; this.b = b; this.c = c; }
public ConstantMatrix cloneMatrix () { return new DenseVector (values, true); }
public Matrix getNewMatrix () { return new DenseVector (numParameters); }
public Matrix getNewMatrix () { return new DenseVector (numParameters); }
public Matrix getNewMatrix () { return new DenseVector (numParameters); }
public Matrix getNewMatrix () { return new DenseVector (numParameters); }
public Matrix getNewMatrix () { return new DenseVector (numParameters); }
public void testTimesEquals () { double[] d1 = new double[] {1, 2, 3, 4, 5}; DenseVector m1 = new DenseVector (d1); DenseVector m2 = new DenseVector (d1); m2.elementwiseTimesEquals (m1); m2.print(); }
public int getWeightsIndex (String weightName) { int wi = weightAlphabet.lookupIndex (weightName); if (wi == -1) throw new IllegalArgumentException ("Alphabet frozen, and no weight with name "+ weightName); if (weights == null) { assert (wi == 0); weights = new DenseVector[1]; weights[0] = new DenseVector ((defaultFeatureIndex+1)); setTrainable (false); } else if (wi == weights.length) { DenseVector[] newWeights = new DenseVector[weights.length+1]; for (int i = 0; i < weights.length; i++) newWeights[i] = weights[i]; newWeights[wi] = new DenseVector ((defaultFeatureIndex+1)); weights = newWeights; setTrainable (false); } return wi; }
protected DenseVector getDenseVectorOf (int ri, Matrix2 matrix) { int dims[] = new int [2]; matrix.getDimensions(dims); DenseVector vec = new DenseVector (dims[1]); for (int i=0; i < dims[1]; i++) { vec.setValue (i, matrix.value(ri,i)); } return vec; }
protected DenseVector getDenseVectorOf (int ri, Matrix2 matrix) { int dims[] = new int [2]; matrix.getDimensions(dims); DenseVector vec = new DenseVector (dims[1]); for (int i=0; i < dims[1]; i++) { vec.setValue (i, matrix.value(ri,i)); } return vec; }
public void setTrainable (boolean f) { if (f != trainable) { if (f) { constraints = new DenseVector[weights.length]; expectations = new DenseVector[weights.length]; for (int i = 0; i < weights.length; i++) { constraints[i] = new DenseVector (weights[i].singleSize()); expectations[i] = new DenseVector (weights[i].singleSize()); } } else constraints = expectations = null; for (int i = 0; i < numStates(); i++) ((State)getState(i)).setTrainable(f); trainable = f; } }
protected MaximizableCRF (InstanceList ilist, CRF4 crf) { // Set up this.numParameters = 2 * numStates() + defaultWeights.length; for (int i = 0; i < weights.length; i++) numParameters += weights[i].numLocations(); this.trainingSet = ilist; this.crf = crf; cachedGradient = new DenseVector (numParameters); // This resets and values that may have been in expecations and constraints setTrainable (true); // This is unfortunately necessary, b/c cachedValue & cachedValueStale not in same place! cachedValueStale = cachedGradientStale = true; gatherConstraints (ilist); }
public void testOne () { DenseVector line = new DenseVector (1); LineMinimizer searcher = new GoldenLineMinimizer (); // The parabola y=x^2 with minimum at x=0 Quadratic q = new Quadratic (1, 0, 0); System.out.println ("start=-10, step=1"); q.setParameter (-10); line.setValue (0, 1.0); searcher.minimize (q, line, 1); System.out.println ("x="+q.getParameter()); assertTrue (Math.abs (q.getParameter() - 0.0) < 0.0001); System.out.println ("start=10, step=1"); q.setParameter (10); line.setValue (0, -1.0); searcher.minimize (q, line, 1); System.out.println ("x="+q.getParameter()); assertTrue (Math.abs (q.getParameter() - 0.0) < 0.0001); System.out.println ("start=10, step=100"); q.setParameter (10); line.setValue (0, -1.0); searcher.minimize (q, line, 100); System.out.println ("x="+q.getParameter()); assertTrue (Math.abs (q.getParameter() - 0.0) < 0.0001); }
/** Increase the size of the weights[] parameters to match (a new, larger) input Alphabet size */ public void growWeightsDimensionToInputAlphabet () { int vs = inputAlphabet.size(); if (vs == this.defaultFeatureIndex) // Doesn't need to grow return; assert (vs > this.defaultFeatureIndex); setTrainable (false); for (int i = 0; i < weights.length; i++) { DenseVector newWeights = new DenseVector (vs+1); newWeights.arrayCopyFrom (0, weights[i]); newWeights.setValue (vs, weights[i].value (defaultFeatureIndex)); newWeights.setValue (defaultFeatureIndex, 0); weights[i] = newWeights; } this.defaultFeatureIndex = vs; cachedCostStale = true; cachedGradientStale = true; }
public void setParameters (double [] buff) { assert (buff.length == getNumParameters()); cachedValueStale = cachedGradientStale = true; DenseVector parameters = new DenseVector (buff, true); int pi = 0; for (int i = 0; i < numStates(); i++) { State s = (State) getState (i); s.initialCost = -parameters.value (pi++); s.finalCost = -parameters.value (pi++); } for (int i = 0; i < weights.length; i++) { defaultWeights[i] = parameters.value (pi++); int nl = weights[i].numLocations(); for (int j = 0; j < nl; j++) weights[i].setValueAtLocation (j, parameters.value (pi++)); } someTrainingDone = true; }
public void getParameters (double[] buffer) { if (buffer.length != getNumParameters ()) buffer = new double [getNumParameters()]; DenseVector parameters = new DenseVector (buffer, true); int pi = 0; for (int i = 0; i < numStates(); i++) { State s = (State) getState (i); parameters.setValue (pi++, -s.initialCost); parameters.setValue (pi++, -s.finalCost); } for (int i = 0; i < weights.length; i++) { parameters.setValue (pi++, defaultWeights[i]); int nl = weights[i].numLocations(); for (int j = 0; j < nl; j++) parameters.setValue (pi++, weights[i].valueAtLocation(j)); } parameters.arrayCopyTo (0, buffer); }