Signatur
Beschreibung
fann_scale_output gehört zur FANN-Erweiterung (Fast Artificial Neural Network) für PHP und skaliert einen Ausgabevektor auf Basis von Parametern, die zuvor mittels fann_set_scaling_params oder fann_set_output_scaling_params berechnet wurden. Die Skalierung normalisiert die Ausgabedaten in einen definierten Wertebereich, was für ein stabiles Training und korrekte Auswertung von Vorhersagen entscheidend ist.
Neuronale Netze arbeiten üblicherweise am effektivsten, wenn Ein- und Ausgabedaten in einem engen Bereich liegen (z. B. zwischen −1 und 1 oder 0 und 1). fann_scale_output transformiert die rohen Ausgabewerte gemäß den gespeicherten Skalierungsparametern des Netzwerks, sodass sie in diesen optimalen Bereich fallen.
Die Funktion verändert den übergebenen Vektor direkt (In-Place-Skalierung). Sie sollte eingesetzt werden, wenn Trainingsdaten manuell verarbeitet werden oder wenn eine Ausgabe vor dem Einlesen in einen weiteren Verarbeitungsschritt normiert werden muss. Üblicherweise wird sie zusammen mit fann_scale_input genutzt.
Voraussetzung für die Verwendung ist, dass das neuronale Netzwerk und die Skalierungsparameter korrekt konfiguriert wurden. Ohne vorherige Parameterkonfiguration liefert die Funktion unerwartete oder fehlerhafte Ergebnisse.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netzwerk-Ressource, wie sie von fann_create_standard oder einer ähnlichen Erstellungsfunktion zurückgegeben wird. |
|
| $output_vector Pflicht | array | Das Array mit den Ausgabewerten, das skaliert werden soll. Wird als Referenz übergeben und direkt modifiziert. |
Rückgabewert
true zurück, wenn die Skalierung erfolgreich war, andernfalls false (z. B. wenn keine Skalierungsparameter gesetzt wurden oder die Netzwerk-Ressource ungültig ist).Beispiele
Ausgabevektor skalieren nach dem Laden eines Netzwerks
<?php
// Netzwerk aus Datei laden
$ann = fann_create_from_file('mein_netz.net');
if ($ann) {
// Skalierungsparameter setzen (Ausgabe soll in den Bereich -1 bis 1 skaliert werden)
fann_set_output_scaling_params($ann, $train_data, -1.0, 1.0);
// Roher Ausgabevektor aus einer externen Quelle
$output = [150.0, 320.5, 98.0];
// Ausgabevektor skalieren
if (fann_scale_output($ann, $output)) {
echo "Skalierter Ausgabevektor:\n";
print_r($output);
} else {
echo "Fehler beim Skalieren des Ausgabevektors.\n";
}
fann_destroy($ann);
} else {
echo "Netzwerk konnte nicht geladen werden.\n";
}
?>
Kombination von Eingabe- und Ausgabeskalierung im Trainingsprozess
<?php
$ann = fann_create_standard(3, 2, 4, 1);
$train_data = fann_read_train_from_file('train.data');
// Skalierungsparameter für Ein- und Ausgabe setzen
fann_set_input_scaling_params($ann, $train_data, 0.0, 1.0);
fann_set_output_scaling_params($ann, $train_data, 0.0, 1.0);
// Eingabevektor skalieren
$input = [5.2, 3.1];
fann_scale_input($ann, $input);
// Netzwerk ausführen
$result = fann_run($ann, $input);
// Ausgabevektor skalieren (z. B. zur Normierung vor Weiterverarbeitung)
if (fann_scale_output($ann, $result)) {
echo "Skaliertes Ergebnis: " . implode(', ', $result) . "\n";
}
fann_destroy($ann);
?>
// Wichtig · Fallstricke
Voraussetzung: Die Skalierungsparameter müssen vor dem Aufruf von fann_scale_output korrekt gesetzt worden sein – entweder über fann_set_output_scaling_params oder fann_set_scaling_params. Ohne gültige Parameter liefert die Funktion false oder verändert den Vektor nicht sinnvoll.
In-Place-Modifikation: Der übergebene Ausgabevektor wird direkt verändert. Falls der Originalvektor erhalten bleiben soll, muss vor dem Aufruf eine Kopie angelegt werden.
Erweiterungsabhängigkeit: fann_scale_output ist nur verfügbar, wenn die PHP-FANN-Erweiterung installiert und aktiviert ist. Die Funktion steht nicht in der PHP-Standardinstallation zur Verfügung.