public Optimizer getOptimizer() { if (optimizer == null && optimizable != null) optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight); return optimizer; }
makeSteepestDescDir(); mapDirByInverseHessian(yDotY); fixDirSigns(); storeSrcInDest(parameters, oldParameters); storeSrcInDest(grad, oldGrad); backTrackingLineSearch(); evalGradient(); if (checkValueTerminationCondition()) { logger.info("Exiting OWL-BFGS on termination #1:"); logger.info("value difference below tolerance (oldValue: " if (checkGradientTerminationCondition()) { logger.info("Exiting OWL-BFGS on termination #2:"); logger.info("gradient=" + MatrixOps.twoNorm(grad) + " < " yDotY = shift();
private void backTrackingLineSearch() { double origDirDeriv = dirDeriv(); if (origDirDeriv >= 0) { throw new InvalidOptimizableException( getNextPoint(alpha); value = evalL1();
public OrthantWiseLimitedMemoryBFGS(Optimizable.ByGradientValue function, double l1wt) { this.optimizable = function; this.l1Weight = l1wt; String parts[] = optimizable.getClass().getName().split("\\."); this.optName = parts[parts.length - 1]; // initialize optimizer state iterations = 0; s = new LinkedList<double[]>(); y = new LinkedList<double[]>(); rhos = new LinkedList<Double>(); alphas = new double[m]; MatrixOps.setAll(alphas, 0.0); yDotY = 0; int numParameters = optimizable.getNumParameters(); // get initial parameters parameters = new double[numParameters]; optimizable.getParameters(parameters); // get initial value value = evalL1(); // get initial gradient grad = new double[numParameters]; evalGradient(); // initialize direction direction = new double[numParameters]; steepestDescentDirection = new double[numParameters]; // initialize backups oldParameters = new double[numParameters]; oldGrad = new double[numParameters]; }
/** * Evaluate gradient, make it a descent direction. */ private void evalGradient() { optimizable.getValueGradient(grad); adjustGradForInfiniteParams(grad); MatrixOps.timesEquals(grad, -1.0); }
private void backTrackingLineSearch() { double origDirDeriv = dirDeriv(); if (origDirDeriv >= 0) { throw new InvalidOptimizableException( getNextPoint(alpha); value = evalL1();
public OrthantWiseLimitedMemoryBFGS(Optimizable.ByGradientValue function, double l1wt) { this.optimizable = function; this.l1Weight = l1wt; String parts[] = optimizable.getClass().getName().split("\\."); this.optName = parts[parts.length - 1]; // initialize optimizer state iterations = 0; s = new LinkedList<double[]>(); y = new LinkedList<double[]>(); rhos = new LinkedList<Double>(); alphas = new double[m]; MatrixOps.setAll(alphas, 0.0); yDotY = 0; int numParameters = optimizable.getNumParameters(); // get initial parameters parameters = new double[numParameters]; optimizable.getParameters(parameters); // get initial value value = evalL1(); // get initial gradient grad = new double[numParameters]; evalGradient(); // initialize direction direction = new double[numParameters]; steepestDescentDirection = new double[numParameters]; // initialize backups oldParameters = new double[numParameters]; oldGrad = new double[numParameters]; }
/** * Evaluate gradient, make it a descent direction. */ private void evalGradient() { optimizable.getValueGradient(grad); adjustGradForInfiniteParams(grad); MatrixOps.timesEquals(grad, -1.0); }
makeSteepestDescDir(); mapDirByInverseHessian(yDotY); fixDirSigns(); storeSrcInDest(parameters, oldParameters); storeSrcInDest(grad, oldGrad); backTrackingLineSearch(); evalGradient(); if (checkValueTerminationCondition()) { logger.info("Exiting OWL-BFGS on termination #1:"); logger.info("value difference below tolerance (oldValue: " if (checkGradientTerminationCondition()) { logger.info("Exiting OWL-BFGS on termination #2:"); logger.info("gradient=" + MatrixOps.twoNorm(grad) + " < " yDotY = shift();
private void backTrackingLineSearch() { double origDirDeriv = dirDeriv(); if (origDirDeriv >= 0) { throw new InvalidOptimizableException( getNextPoint(alpha); value = evalL1();
public Optimizer getOptimizer() { if (optimizer == null && optimizable != null) optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight); return optimizer; }
public OrthantWiseLimitedMemoryBFGS(Optimizable.ByGradientValue function, double l1wt) { this.optimizable = function; this.l1Weight = l1wt; String parts[] = optimizable.getClass().getName().split("\\."); this.optName = parts[parts.length - 1]; // initialize optimizer state iterations = 0; s = new LinkedList<double[]>(); y = new LinkedList<double[]>(); rhos = new LinkedList<Double>(); alphas = new double[m]; MatrixOps.setAll(alphas, 0.0); yDotY = 0; int numParameters = optimizable.getNumParameters(); // get initial parameters parameters = new double[numParameters]; optimizable.getParameters(parameters); // get initial value value = evalL1(); // get initial gradient grad = new double[numParameters]; evalGradient(); // initialize direction direction = new double[numParameters]; steepestDescentDirection = new double[numParameters]; // initialize backups oldParameters = new double[numParameters]; oldGrad = new double[numParameters]; }
/** * Evaluate gradient, make it a descent direction. */ private void evalGradient() { optimizable.getValueGradient(grad); adjustGradForInfiniteParams(grad); MatrixOps.timesEquals(grad, -1.0); }
makeSteepestDescDir(); mapDirByInverseHessian(yDotY); fixDirSigns(); storeSrcInDest(parameters, oldParameters); storeSrcInDest(grad, oldGrad); backTrackingLineSearch(); evalGradient(); if (checkValueTerminationCondition()) { logger.info("Exiting OWL-BFGS on termination #1:"); logger.info("value difference below tolerance (oldValue: " if (checkGradientTerminationCondition()) { logger.info("Exiting OWL-BFGS on termination #2:"); logger.info("gradient=" + MatrixOps.twoNorm(grad) + " < " yDotY = shift();
public Optimizer getOptimizer() { if (optimizer == null && optimizable != null) optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight); return optimizer; }
public Optimizer getOptimizer(InstanceList trainingSet) { if (trainingSet != this.trainingSet || optimizable == null) { getOptimizable(trainingSet); optimizer = null; } if (optimizer == null) optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight); return optimizer; } }
public Optimizer getOptimizer(InstanceList trainingSet) { if (trainingSet != this.trainingSet || optimizable == null) { getOptimizable(trainingSet); optimizer = null; } if (optimizer == null) optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight); return optimizer; } }
public Optimizer getOptimizer(InstanceList trainingSet) { if (trainingSet != this.trainingSet || optimizable == null) { getOptimizable(trainingSet); optimizer = null; } if (optimizer == null) optimizer = new OrthantWiseLimitedMemoryBFGS(optimizable, l1Weight); return optimizer; } }
public Optimizer getOptimizer(InstanceList trainingSet) { getOptimizableCRF(trainingSet); if (opt == null || ocrf != opt.getOptimizable()) opt = new OrthantWiseLimitedMemoryBFGS(ocrf, l1Weight); return opt; }
public Optimizer getOptimizer(InstanceList trainingSet) { getOptimizableCRF(trainingSet); if (opt == null || ocrf != opt.getOptimizable()) opt = new OrthantWiseLimitedMemoryBFGS(ocrf, l1Weight); return opt; }