Start · Sprachen · PHP · Referenz · fann_descale_output

fann_descale_output

Funktion

Skaliert die Werte eines Ausgabevektors anhand zuvor berechneter Skalierungsparameter zurück in den ursprünglichen Wertebereich.

Kategorie: misc

Signatur

fann_descale_output(resource $ann, array $output_vector): bool

Beschreibung

fann_descale_output ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) für PHP und kehrt die Skalierung eines Ausgabevektors um. Nachdem ein neuronales Netz Vorhersagen erzeugt hat, liegen die Ausgaben oft in einem normierten Bereich (z. B. zwischen 0 und 1). Mit dieser Funktion werden die normierten Werte wieder in den ursprünglichen Wertebereich zurücktransformiert.

Die Skalierungsparameter müssen zuvor durch einen Aufruf von fann_set_scaling_params oder fann_calculate_mean_stddev berechnet worden sein und sind im Netz-Ressource-Objekt gespeichert. Ohne vorherige Berechnung dieser Parameter schlägt die Funktion fehl.

Die Funktion ist typischerweise Teil eines Workflows: Eingaben normieren → Netz ausführen → Ausgaben zurückskalieren. Sie wird eingesetzt, wenn reale, interpretierbare Werte (z. B. Preise, Temperaturen) aus der Netzausgabe gewonnen werden sollen.

Beachte, dass fann_descale_output den übergebenen Vektor direkt in der Ressource modifiziert; sie gibt true bei Erfolg zurück und false bei einem Fehler.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Netz-Ressource, die zuvor mit fann_create_standard oder einer ähnlichen Funktion erzeugt wurde und bereits berechnete Skalierungsparameter enthält.
$output_vector Pflicht array Ein Array mit den normierten Ausgabewerten des neuronalen Netzes, die in den ursprünglichen Wertebereich zurücktransformiert werden sollen. Die Länge muss der Anzahl der Ausgabeneuronen entsprechen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Rückskalierung erfolgreich war, andernfalls false (z. B. wenn keine Skalierungsparameter gesetzt wurden oder die Ressource ungültig ist).

Beispiele

Ausgabevektor nach Netzvorhersage zurückskalieren

<?php
// Netz laden
$ann = fann_create_from_file('my_network.net');

// Trainingsdaten laden, um Skalierungsparameter zu berechnen
$train_data = fann_read_train_from_file('my_train_data.data');

// Skalierungsparameter auf Basis der Trainingsdaten setzen
// (neue_min = -1, neue_max = 1 für Ein- und Ausgabe)
fann_set_scaling_params($ann, $train_data, -1, 1, -1, 1);

// Eingaben skalieren
$input = [150.0, 3.5];
fann_scale_input($ann, $input);

// Netz ausführen
$output = fann_run($ann, $input);

echo "Normierter Ausgabewert: " . $output[0] . PHP_EOL;

// Ausgabe zurückskalieren
if (fann_descale_output($ann, $output)) {
    echo "Realer Ausgabewert: " . $output[0] . PHP_EOL;
} else {
    echo "Fehler beim Zurückskalieren des Ausgabevektors." . PHP_EOL;
}

fann_destroy_train($train_data);
fann_destroy($ann);
?>
Normierter Ausgabewert: 0.73421 Realer Ausgabewert: 248.63

Vollständiger Skalierungs-Workflow mit Fehlerbehandlung

<?php
$ann = fann_create_standard(3, 2, 4, 1);
$train_data = fann_read_train_from_file('housing.data');

if (!fann_set_scaling_params($ann, $train_data, -1, 1, -1, 1)) {
    die('Skalierungsparameter konnten nicht gesetzt werden.');
}

// Netz trainieren (vereinfacht)
fann_train_on_data($ann, $train_data, 500, 10, 0.001);

// Neue Eingabe vorbereiten und skalieren
$input = [75.0, 3];
fann_scale_input($ann, $input);

// Vorhersage
$output = fann_run($ann, $input);

// Ausgabe in reale Werte zurücktransformieren
if (fann_descale_output($ann, $output)) {
    printf("Vorhergesagter Preis: %.2f EUR\n", $output[0]);
} else {
    echo "Rückskalierung fehlgeschlagen – wurden Skalierungsparameter gesetzt?" . PHP_EOL;
}

fann_destroy_train($train_data);
fann_destroy($ann);
?>
Vorhergesagter Preis: 312450.00 EUR

// Wichtig · Fallstricke

Voraussetzung: Die Skalierungsparameter müssen zwingend vor dem Aufruf von fann_descale_output gesetzt werden, z. B. mit fann_set_scaling_params. Andernfalls schlägt die Funktion stillschweigend fehl und gibt false zurück.

Konsistenz: Der Wertebereich, mit dem die Ausgabe zurückskaliert wird, muss identisch mit dem sein, der beim ursprünglichen Skalieren verwendet wurde – andernfalls erhält man falsche Ergebnisse.

Erweiterung erforderlich: fann_descale_output ist nur verfügbar, wenn die PHP-FANN-Erweiterung (php-fann) installiert und aktiviert ist. Sie ist nicht Teil der PHP-Standardinstallation.