@Override protected double computeScaleFactor( Vector gradientCurrent, Vector gradientPrevious ) { Vector direction = this.lineFunction.getDirection(); Vector deltaGradient = gradientCurrent.minus( gradientPrevious ); double deltaTgradient = deltaGradient.dotProduct( gradientCurrent ); double denom = gradientPrevious.dotProduct( direction ); double beta = -deltaTgradient / denom; return beta; }
@Override protected double computeScaleFactor( Vector gradientCurrent, Vector gradientPrevious ) { Vector direction = this.lineFunction.getDirection(); Vector deltaGradient = gradientCurrent.minus( gradientPrevious ); double deltaTgradient = deltaGradient.dotProduct( gradientCurrent ); double denom = gradientPrevious.dotProduct( direction ); double beta = -deltaTgradient / denom; return beta; }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); delta = residual.dotProduct(residual); }
/** * Computes the scale component for the inverse-gamma distribution * @return * Scale component for the inverse-gamma distribution */ public double getScale() { Vector mean = this.getMean(); Matrix Ci = this.covarianceInverse; return 0.5 * (this.outputSumSquared - mean.times(Ci).dotProduct(mean)); }
@Override public double evaluateAsDouble( final Vectorizable input) { return this.getWeightVector().dotProduct(input.convertToVector()); }
protected double computeScaleFactor( Vector gradientCurrent, Vector gradientPrevious ) { Vector deltaGradient = gradientCurrent.minus( gradientPrevious ); double deltaTgradient = deltaGradient.dotProduct( gradientCurrent ); double denom = gradientPrevious.norm2Squared(); double beta = deltaTgradient / denom; return beta; }
/** * Computes the scale component for the inverse-gamma distribution * @return * Scale component for the inverse-gamma distribution */ public double getScale() { Vector mean = this.getMean(); Matrix Ci = this.covarianceInverse; return 0.5 * (this.outputSumSquared - mean.times(Ci).dotProduct(mean)); }
@Override public double evaluateAsDouble( final Vectorizable input) { return this.getWeightVector().dotProduct(input.convertToVector()); }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver(MatrixVectorMultiplier function) { this.A = function; x = super.x0; residual = rhs.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override public UnivariateGaussian.PDF evaluate( Vectorizable input) { // Bishop's equations 3.58-3.59 Vector x = input.convertToVector(); double mean = x.dotProduct( this.posterior.getMean() ); double variance = x.times( this.posterior.getCovariance() ).dotProduct(x) + outputVariance; return new UnivariateGaussian.PDF( mean, variance ); }
@Override public UnivariateGaussian.PDF evaluate( Vectorizable input) { // Bishop's equations 3.58-3.59 Vector x = input.convertToVector(); double mean = x.dotProduct( this.posterior.getMean() ); double variance = x.times( this.posterior.getCovariance() ).dotProduct(x) + outputVariance; return new UnivariateGaussian.PDF( mean, variance ); }
@Override public UnivariateGaussian.PDF evaluate( Vectorizable input) { // Bishop's equations 3.58-3.59 Vector x = input.convertToVector(); double mean = x.dotProduct( this.posterior.getMean() ); double variance = x.times( this.posterior.getCovariance() ).dotProduct(x) + outputVariance; return new UnivariateGaussian.PDF( mean, variance ); }
@Override final protected void initializeSolver( OverconstrainedMatrixVectorMultiplier function) { this.A = function; x = super.x0; AtransB = (A.transposeMult(rhs)); residual = AtransB.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver( OverconstrainedMatrixVectorMultiplier function) { this.A = function; x = super.x0; AtransB = (A.transposeMult(rhs)); residual = AtransB.minus(function.evaluate(x)); d = residual; delta = residual.dotProduct(residual); }
@Override final protected void initializeSolver( MatrixVectorMultiplierWithPreconditioner function) { this.A = function; x = super.x0; residual = rhs.minus(A.evaluate(x)); d = A.precondition(residual); delta = residual.dotProduct(d); }
@Override final protected void initializeSolver( MatrixVectorMultiplierWithPreconditioner function) { this.A = function; x = super.x0; residual = rhs.minus(A.evaluate(x)); d = A.precondition(residual); delta = residual.dotProduct(d); }
@Override public StudentTDistribution evaluate( Vectorizable input) { Vector x = input.convertToVector(); double mean = x.dotProduct( this.posterior.getMean() ); double dofs = this.posterior.getInverseGamma().getShape() * 2.0; double v = x.times( this.posterior.getGaussian().getCovariance() ).dotProduct(x); double anbn = this.posterior.getInverseGamma().getShape() / this.posterior.getInverseGamma().getScale(); double precision = anbn / (1.0 + v); return new StudentTDistribution( dofs, mean, precision ); }
public boolean test_backtrack(Matrix W, Matrix grad, Matrix prox, double eta){ Matrix tmp = prox.clone(); tmp.minusEquals(W); Vector tmpvec = tmp.getColumn(0); return ( eval(prox) <= eval(W) + grad.getColumn(0).dotProduct(tmpvec) + 0.5*eta*tmpvec.norm2()); } }