Ich versuche, das Beispiel von EJML Wiki zu verwenden, wo wir Levenberg- Marquardt Optimierung source code hereLM-Algorithmus EJML
verwende ich vergleiche es mit diesem einen .Net version, in dem wir die Möglichkeit haben, die Funktionsmodellparameter zu geben.
Zum Beispiel: a*x^2+b*x+c
und wir können alle Parameter für das Modell als Eingaben angeben.
Allerdings kann ich für den EJML-LM-Code nicht sehen, wo ich diese Modellparameter angeben kann.
ich unten ein, wie ich die LM EJML Klasse verwenden:
public class Main {
public static void main(String[] args) {
LevenbergMarquardt lm = new LevenbergMarquardt(new LevenbergMarquardt.Function() {
@Override
public void compute(DenseMatrix64F param, DenseMatrix64F x, DenseMatrix64F y) {
// TODO Auto-generated method stub
System.out.println("param:");
param.print();
System.out.println("X:");
x.print();
//y=a*x^2+b*x+c
for (int i = 0; i < x.numRows; i++) {
double xx = x.get(i, 0);
y.set(i, 0, param.get(0, 0) * xx * xx +
param.get(1, 0) * xx + param.get(2, 0));
}
System.out.println("Y:");
y.print();
}
});
//Seed inital parameters
lm.optimize(new DenseMatrix64F(new double[][]{{1}, {1}, {1}}),
new DenseMatrix64F(new double[][]{{0.1975}, {0.5084}, {0.7353}, {0.9706},
{1.1891}}), new DenseMatrix64F(new double[][]{{-0.0126}, {0.2311},
{0.4412}, {1.0210}, {1.1891}}));
}
}
So Wie kann ich die Modellparameter geben?