This macro shows the use of an ANN for regression analysis: given a set {i} of input vectors i and a set {o} of output vectors o, one looks for the unknown function f(i)=o.
The ANN can approximate this function; TMLPAnalyzer::DrawTruthDeviation methods can be used to evaluate the quality of the approximation.
For simplicity, we use a known function to create test and training data. In reality this function is usually not known, and the data comes e.g. from measurements.
Processing /builddir/build/BUILD/root-6.12.06/tutorials/mlp/mlpRegression.C...
Network with structure: x,y:10:8:f
inputs with low values in the differences plot may not be needed
x -> 0.0842732 +/- 0.0437567
y -> 0.0815268 +/- 0.0429495
return sin((1.7+
x)*(
x-0.3)-2.3*(
y+0.7));
}
void mlpRegression() {
for (
Int_t i=0; i<1000; i++) {
}
"Entry$%2","(Entry$%2)==0");
mlp->
Train(150,
"graph update=10");
mlpa->
GetIOTree()->
Draw(
"Out.Out0-True.True0:True.True0>>hDelta",
"",
"goff");
hDelta->
SetTitle(
"Difference between ANN output and truth vs. truth");
for (
Int_t ix=0; ix<15; ix++) {
for (
Int_t iy=0; iy<15; iy++) {
delta[idx]=mlp->
Evaluate(0,
v)-theUnknownFunction(
v[0],
v[1]);
}
}
"ANN extrapolation, ANN output - truth",
225, vx, vy, delta);
g2Extrapolate->
Draw(
"TRI2");
}
- Author
- Axel Naumann, 2005-02-02
Definition in file mlpRegression.C.