Signatur
Beschreibung
fann_descale_train ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) für PHP und wird verwendet, um einen skalierten Trainingsdatensatz wieder in seinen ursprünglichen Wertebereich zurückzutransformieren. Die Funktion setzt voraus, dass zuvor Skalierungsparameter berechnet wurden, typischerweise durch fann_set_scaling_params oder fann_set_input_scaling_params / fann_set_output_scaling_params.
Im Workflow eines neuronalen Netzes werden Trainingsdaten häufig normalisiert oder skaliert (z. B. auf den Bereich [0, 1] oder [-1, 1]), bevor das Netzwerk trainiert wird. Nach dem Training oder zur Auswertung kann es notwendig sein, diese Skalierung rückgängig zu machen, um die Daten wieder in ihrer ursprünglichen Einheit interpretieren zu können – genau dafür ist fann_descale_train gedacht.
Die Funktion verändert den übergebenen train_data-Ressource-Inhalt direkt (In-Place-Operation). Es werden sowohl die Eingabe- als auch die Ausgabewerte des gesamten Trainingsdatensatzes zurückskaliert. Für das selektive Zurückskalieren nur der Eingabe- oder nur der Ausgabedaten stehen fann_descale_input bzw. fann_descale_output zur Verfügung.
- Muss nach
fann_scale_trainaufgerufen werden, um den Ausgangszustand der Daten wiederherzustellen. - Setzt voraus, dass das Netz zuvor mit
fann_set_scaling_paramskonfiguriert wurde. - Gibt
falsezurück, wenn keine Skalierungsparameter gesetzt wurden oder ein Fehler auftritt.
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 und die Skalierungsparameter enthält. |
|
| $train_data Pflicht | resource | Eine FANN-Trainingsdaten-Ressource, die mit fann_read_train_from_file oder einer ähnlichen Funktion geladen wurde. Der Datensatz wird direkt verändert. |
Rückgabewert
true zurück, wenn das Zurückskalieren erfolgreich war. Gibt false zurück, wenn die Skalierungsparameter fehlen, die Ressourcen ungültig sind oder ein interner Fehler auftritt.Beispiele
Trainingsdaten skalieren, Netz trainieren und Skalierung rückgängig machen
<?php
// Netzwerk erstellen: 2 Eingaben, 1 Hidden Layer mit 3 Neuronen, 1 Ausgabe
$ann = fann_create_standard(3, 2, 3, 1);
// Trainingsdaten laden
$train_data = fann_read_train_from_file('daten.train');
// Skalierungsparameter setzen (Zielbereich für Ein- und Ausgaben: -1 bis 1)
fann_set_scaling_params(
$ann,
$train_data,
-1, // new_input_min
1, // new_input_max
-1, // new_output_min
1 // new_output_max
);
// Trainingsdaten skalieren
fann_scale_train($ann, $train_data);
// Netz mit skalierten Daten trainieren
fann_train_on_data($ann, $train_data, 1000, 10, 0.001);
// Skalierung des Trainingsdatensatzes rückgängig machen
if (fann_descale_train($ann, $train_data)) {
echo "Trainingsdaten erfolgreich zurückskaliert." . PHP_EOL;
} else {
echo "Fehler beim Zurückskalieren." . PHP_EOL;
}
// Ressourcen freigeben
fann_destroy_train($train_data);
fann_destroy($ann);
?>
Selektives Zurückskalieren vs. vollständiges Zurückskalieren
<?php
$ann = fann_create_standard(3, 2, 4, 1);
$train_data = fann_read_train_from_file('messdaten.train');
fann_set_scaling_params($ann, $train_data, 0, 1, 0, 1);
fann_scale_train($ann, $train_data);
// Training durchführen...
fann_train_on_data($ann, $train_data, 500, 10, 0.0001);
// Nur Ausgabedaten zurückskalieren (z. B. für Auswertung der Labels)
fann_descale_output($ann, $train_data);
echo "Nur Ausgaben zurückskaliert." . PHP_EOL;
// Vollständiges Zurückskalieren (inkl. Eingaben)
// Erneut skalieren, um einen sauberen Zustand herzustellen
fann_scale_train($ann, $train_data);
if (fann_descale_train($ann, $train_data)) {
echo "Alle Daten vollständig zurückskaliert." . PHP_EOL;
}
fann_destroy_train($train_data);
fann_destroy($ann);
?>
// Wichtig · Fallstricke
Voraussetzung: Vor dem Aufruf von fann_descale_train müssen Skalierungsparameter über fann_set_scaling_params, fann_set_input_scaling_params oder fann_set_output_scaling_params gesetzt worden sein. Fehlen diese Parameter, schlägt die Funktion fehl und gibt false zurück.
In-Place-Veränderung: Die Funktion verändert den Trainingsdatensatz direkt. Wenn der Originaldatensatz erhalten bleiben soll, muss vorher eine Kopie erstellt werden.
Erweiterungsverfügbarkeit: Die FANN-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (z. B. über PECL: pecl install fann). Ab PHP 8.x ist die Verfügbarkeit der Erweiterung eingeschränkt zu prüfen.