Signatur
Beschreibung
fann_descale_input ist Teil der FANN-Erweiterung (Fast Artificial Neural Network Library) für PHP und kehrt die Skalierung eines Eingabevektors um. Wurden Eingabedaten vor dem Training oder der Vorhersage mit fann_scale_input in einen normierten Bereich transformiert, ermöglicht diese Funktion die Rücktransformation in die originalen Wertebereiche.
Die Skalierungsparameter (Mittelwert, Standardabweichung bzw. Min/Max-Werte) müssen zuvor durch fann_set_scaling_params oder fann_set_input_scaling_params am Netz gesetzt worden sein. Ohne diese Parameter kann die Funktion die Originalwerte nicht korrekt rekonstruieren.
Typisch wird fann_descale_input eingesetzt, wenn man normierte Eingabevektoren zur Fehleranalyse oder Protokollierung wieder in menschlich interpretierbare Werte zurückrechnen möchte. Im regulären Vorhersage-Workflow ist hingegen häufiger fann_descale_output relevant, da die Ausgabe des Netzes zurückskaliert wird.
- Setzt voraus, dass Skalierungsparameter korrekt gesetzt wurden.
- Verändert den übergebenen Eingabevektor direkt (in-place).
- Gibt true bei Erfolg, false bei Fehler zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netzwerk-Ressource, die mit fann_create_standard oder einer ähnlichen Funktion erstellt wurde. |
|
| $input_vector Pflicht | array | Ein Array mit den skalierten Eingabewerten, die zurücktransformiert werden sollen. Die Länge muss der Anzahl der Eingabeneuronen des Netzes entsprechen. |
Rückgabewert
true zurück, wenn die Rückskalierung erfolgreich war, andernfalls false (z. B. wenn keine Skalierungsparameter gesetzt wurden oder die Netzwerk-Ressource ungültig ist).Beispiele
Eingabevektor nach der Skalierung zurückrechnen
<?php
// Netz laden
$ann = fann_create_from_file('mein_netz.net');
// Trainingsdaten laden und Skalierungsparameter berechnen
$train_data = fann_read_train_from_file('trainingsdaten.data');
fann_set_scaling_params(
$ann,
$train_data,
-1, // neuer Minimalwert (Eingabe)
1, // neuer Maximalwert (Eingabe)
-1, // neuer Minimalwert (Ausgabe)
1 // neuer Maximalwert (Ausgabe)
);
// Originaler Eingabevektor
$original_input = [25.0, 100.0, 0.75];
// Eingabevektor skalieren (für Netz-Vorhersage)
$scaled_input = $original_input;
fann_scale_input($ann, $scaled_input);
echo 'Skaliert: ' . implode(', ', $scaled_input) . PHP_EOL;
// Skalierung rückgängig machen
fann_descale_input($ann, $scaled_input);
echo 'Zurückskaliert: ' . implode(', ', $scaled_input) . PHP_EOL;
fann_destroy($ann);
fann_destroy_train($train_data);
?>
Rückskalierung im Vorhersage-Workflow mit Fehlerprüfung
<?php
$ann = fann_create_from_file('mein_netz.net');
$train_data = fann_read_train_from_file('trainingsdaten.data');
fann_set_scaling_params($ann, $train_data, -1, 1, -1, 1);
$input = [42.0, 7.5];
// Skalierung vor der Vorhersage
fann_scale_input($ann, $input);
// Netz-Vorhersage
$output = fann_run($ann, $input);
// Rückskalierung des Eingabevektors für Logging
$result = fann_descale_input($ann, $input);
if ($result === false) {
echo 'Fehler beim Zurückskalieren des Eingabevektors!' . PHP_EOL;
} else {
echo 'Zurückskalierter Eingabevektor: ' . implode(', ', $input) . PHP_EOL;
}
fann_destroy($ann);
fann_destroy_train($train_data);
?>
// Wichtig · Fallstricke
Voraussetzung: Die Skalierungsparameter müssen vor dem Aufruf von fann_descale_input explizit gesetzt worden sein – entweder über fann_set_scaling_params oder fann_set_input_scaling_params. Fehlt diese Initialisierung, liefert die Funktion false oder produziert unerwartete Ergebnisse.
FANN-Erweiterung erforderlich: Diese Funktion steht nur zur Verfügung, wenn PHP mit der FANN-Extension kompiliert wurde (pecl install fann). Prüfen Sie die Verfügbarkeit mit extension_loaded('fann').
Versionierung: Die FANN-Erweiterung für PHP befindet sich seit längerer Zeit in einem stabilen Zustand, wird aber nicht aktiv weiterentwickelt. Prüfen Sie die Kompatibilität mit Ihrer PHP-Version.