Signatur
Beschreibung
fann_scale_train wendet eine zuvor konfigurierte Skalierung auf alle Ein- und Ausgabewerte eines FANN-Trainings-Datensatzes an. Die Skalierungsparameter müssen zuvor mittels fann_set_scaling_params oder fann_calculate_mean_stddev für das neuronale Netz berechnet worden sein.
Das Skalieren von Trainingsdaten ist ein wichtiger Vorverarbeitungsschritt beim Training künstlicher neuronaler Netze. Durch die Normalisierung der Eingabe- und Ausgabewerte auf einen einheitlichen Wertebereich (z. B. zwischen 0 und 1 oder −1 und 1) kann das Training erheblich beschleunigt und die Genauigkeit des Netzes verbessert werden.
Typischerweise wird diese Funktion aufgerufen, nachdem Trainingsdaten mit fann_read_train_from_file geladen und Skalierungsparameter mit fann_set_scaling_params gesetzt wurden. Vor der Verwendung der Netz-Ausgaben im realen Kontext müssen die skalierten Werte mit fann_descale_output oder fann_descale_train wieder in den ursprünglichen Wertebereich zurückskaliert werden.
Die Funktion verändert den Trainings-Datensatz direkt (in-place). Eine mehrfache Anwendung ohne zwischenzeitliches Descaling führt zu falschen Werten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netz-Ressource, die zuvor mit fann_create_standard oder einer ähnlichen Funktion erstellt wurde und für die Skalierungsparameter gesetzt wurden. |
|
| $data Pflicht | resource | Eine gültige FANN-Trainings-Datensatz-Ressource, die z. B. mit fann_read_train_from_file geladen wurde. |
Rückgabewert
true zurück, wenn die Skalierung erfolgreich durchgeführt wurde, andernfalls false. Im Fehlerfall (z. B. wenn keine Skalierungsparameter gesetzt wurden) wird false zurückgegeben.Beispiele
Trainingsdaten skalieren und Netz trainieren
<?php
// Neuronales Netz mit 2 Eingabe-, 3 versteckten und 1 Ausgabe-Neuron erstellen
$ann = fann_create_standard(3, 2, 3, 1);
// Aktivierungsfunktion setzen
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);
// Trainingsdaten laden
$train_data = fann_read_train_from_file('xor.data');
if ($ann && $train_data) {
// Skalierungsparameter berechnen (Eingabe: 0..1, Ausgabe: -1..1)
fann_set_scaling_params(
$ann,
$train_data,
0, // new_input_min
1, // new_input_max
-1, // new_output_min
1 // new_output_max
);
// Trainingsdaten skalieren
if (fann_scale_train($ann, $train_data)) {
echo "Trainingsdaten erfolgreich skaliert.\n";
// Netz mit skalierten Daten trainieren
fann_train_on_data($ann, $train_data, 1000, 100, 0.0001);
echo "Training abgeschlossen.\n";
} else {
echo "Fehler beim Skalieren der Trainingsdaten.\n";
}
fann_destroy_train($train_data);
fann_destroy($ann);
}
?>
Skalieren und anschließendes Descalen von Ausgabewerten
<?php
$ann = fann_create_standard(3, 2, 4, 1);
$train_data = fann_read_train_from_file('regression.data');
if ($ann && $train_data) {
// Skalierungsparameter setzen
fann_set_scaling_params($ann, $train_data, -1, 1, -1, 1);
// Trainingsdaten skalieren
fann_scale_train($ann, $train_data);
// Netz trainieren
fann_train_on_data($ann, $train_data, 500, 0, 0.001);
// Netz für einen neuen (ebenfalls zu skalierenden) Eingabevektor verwenden
$input = [0.5, 0.8];
fann_scale_input($ann, $input);
$output = fann_run($ann, $input);
// Ausgabe zurückskalieren in den Originalwertebereich
fann_descale_output($ann, $output);
echo "Skalierter Ausgabewert: " . $output[0] . "\n";
fann_destroy_train($train_data);
fann_destroy($ann);
}
?>
// Wichtig · Fallstricke
Achtung: fann_scale_train verändert den Trainings-Datensatz dauerhaft in-place. Wenn die Originalwerte noch benötigt werden, sollte eine Kopie des Datensatzes erstellt oder die Originalwerte anderweitig gespeichert werden.
Die Skalierungsparameter müssen vor dem Aufruf von fann_scale_train mit fann_set_scaling_params gesetzt werden. Andernfalls schlägt die Funktion fehl und gibt false zurück.
Diese Funktion ist Teil der FANN-Extension (Fast Artificial Neural Network Library) und steht nur zur Verfügung, wenn PHP mit der fann-Extension kompiliert wurde. Sie ist nicht in PHP-Standard-Installationen enthalten.