Signatur
Beschreibung
fann_set_output_scaling_params analysiert die Ausgabewerte in den übergebenen Trainingsdaten und berechnet daraus die passenden Skalierungsparameter für das neuronale Netz. Diese Parameter werden benötigt, um die Ausgabewerte des Netzes automatisch in einen definierten Wertebereich zu transformieren.
Die Skalierung der Ausgaben ist besonders dann sinnvoll, wenn die Trainingsdaten stark unterschiedliche Wertebereiche aufweisen oder wenn ein normierter Ausgabebereich (z. B. zwischen -1.0 und 1.0) für die Weiterverarbeitung benötigt wird. Die Funktion nutzt die Minimal- und Maximalwerte aus den Trainingsdaten, um geeignete Transformationsparameter zu berechnen.
Um sowohl Eingabe- als auch Ausgabe-Skalierungsparameter gleichzeitig zu setzen, kann fann_set_scaling_params verwendet werden. Für die reine Eingabe-Seite steht fann_set_input_scaling_params zur Verfügung.
Die eigentliche Skalierung der Ausgabe wird während der Netznutzung durch den Aufruf von fann_scale_output bzw. automatisch durch fann_run durchgeführt, wenn die Skalierung aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netzwerk-Ressource, wie sie von fann_create_standard oder ähnlichen Funktionen zurückgegeben wird. |
|
| $train_data Pflicht | resource | Eine FANN-Trainingsdaten-Ressource, wie sie von fann_read_train_from_file oder fann_create_train erzeugt wurde. Die Ausgabewerte dieser Daten werden zur Berechnung der Skalierungsparameter verwendet. |
|
| $new_input_min Pflicht | float | Der gewünschte minimale Wert des skalierten Ausgabebereichs (z. B. -1.0 oder 0.0). |
|
| $new_input_max Pflicht | float | Der gewünschte maximale Wert des skalierten Ausgabebereichs (z. B. 1.0 oder 100.0). |
Rückgabewert
true zurück, wenn die Skalierungsparameter erfolgreich gesetzt wurden, andernfalls false (z. B. bei ungültiger Netzwerk- oder Trainingsdaten-Ressource).Beispiele
Ausgabe-Skalierungsparameter aus Trainingsdaten setzen
<?php
// Neuronales Netz erstellen: 2 Eingaben, 1 versteckte Schicht (3 Neuronen), 1 Ausgabe
$ann = fann_create_standard(3, 2, 3, 1);
// Trainingsdaten aus Datei laden
$train_data = fann_read_train_from_file('training.data');
if ($ann && $train_data) {
// Ausgabe-Skalierungsparameter auf den Bereich [-1.0, 1.0] setzen
if (fann_set_output_scaling_params($ann, $train_data, -1.0, 1.0)) {
echo "Ausgabe-Skalierungsparameter erfolgreich gesetzt." . PHP_EOL;
} else {
echo "Fehler beim Setzen der Ausgabe-Skalierungsparameter." . PHP_EOL;
}
fann_destroy_train($train_data);
fann_destroy($ann);
}
Kombination von Eingabe- und Ausgabe-Skalierung
<?php
$ann = fann_create_standard(3, 3, 5, 2);
$train_data = fann_read_train_from_file('multi_output.data');
if ($ann && $train_data) {
// Eingabe-Skalierungsparameter setzen
$inputOk = fann_set_input_scaling_params($ann, $train_data, 0.0, 1.0);
// Ausgabe-Skalierungsparameter setzen
$outputOk = fann_set_output_scaling_params($ann, $train_data, 0.0, 1.0);
if ($inputOk && $outputOk) {
echo "Eingabe- und Ausgabe-Skalierung konfiguriert." . PHP_EOL;
// Netz mit Skalierung trainieren
fann_train_on_data($ann, $train_data, 500, 10, 0.001);
fann_save($ann, 'skaliertes_netz.net');
}
fann_destroy_train($train_data);
fann_destroy($ann);
}
// Wichtig · Fallstricke
Hinweis zur FANN-Extension: Die FANN-Funktionen sind nur verfügbar, wenn die PHP-Extension fann installiert und aktiviert ist. Diese Extension basiert auf der C-Bibliothek Fast Artificial Neural Network Library (FANN).
Die Parameter new_input_min und new_input_max definieren trotz ihres etwas irreführenden Namens den gewünschten Ausgabe-Wertebereich nach der Skalierung. Die Benennung stammt aus der zugrunde liegenden FANN-C-Bibliothek.
Die gesetzten Skalierungsparameter werden nur dann aktiv genutzt, wenn die Skalierung explizit aufgerufen wird (z. B. über fann_scale_output) oder wenn das Netz entsprechend konfiguriert ist. Ohne explizite Skalierungsaufrufe haben die gesetzten Parameter keinen Einfluss auf die Netzausgabe.