package joshua.discriminative.training.risk_annealer;
import joshua.discriminative.training.lbfgs.LBFGSWrapper;
public class GradientOptimizer extends LBFGSWrapper {
GradientComputer gradientComputer;
public GradientOptimizer(int numPara, double[] initWeights, boolean isMinimizer, GradientComputer gradientComputer, boolean useL2Regula, double varianceForL2,
boolean useModelDivergenceRegula, double lambda, int printFirstN) {
super(numPara, initWeights, isMinimizer, useL2Regula, varianceForL2, useModelDivergenceRegula, lambda, printFirstN);
this.gradientComputer = gradientComputer;
}
public double[] computeFuncValAndGradient(double[] curWeights, double[] resFuncVal) {
gradientComputer.reComputeFunctionValueAndGradient(curWeights);
resFuncVal[0] = gradientComputer.getLatestFunctionValue();
return gradientComputer.getLatestGradient();
}
}