Start · Sprachen · PHP · Referenz · fann_scale_output_train_data

fann_scale_output_train_data

Funktion

Skaliert die Ausgabewerte in einem FANN-Trainingsdatensatz auf den angegebenen Wertebereich [<code>new_min</code>, <code>new_max</code>].

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_scale_output_train_data(resource $train_data, float $new_min, float $new_max): bool

Beschreibung

fann_scale_output_train_data gehört zur FANN-Erweiterung (Fast Artificial Neural Network) für PHP und normalisiert ausschließlich die Ausgabewerte eines Trainingsdatensatzes auf einen frei wählbaren Zielbereich. Die Eingabewerte des Datensatzes bleiben unverändert.

Die Skalierung ist ein wesentlicher Vorverarbeitungsschritt beim Training neuronaler Netze. Wenn die Ausgabeneuronen Aktivierungsfunktionen verwenden, die nur in einem bestimmten Wertebereich ausgeben (z. B. Sigmoid: [0, 1] oder Tangens-Hyperbolicus: [−1, 1]), müssen die Trainingsziele in denselben Bereich überführt werden, damit das Training konvergiert und der Fehler aussagekräftig ist.

Im Gegensatz zu fann_scale_train_data, das sowohl Eingaben als auch Ausgaben skaliert, und fann_scale_input_train_data, das nur Eingaben skaliert, wirkt diese Funktion selektiv nur auf die Ausgabeseite. Das ermöglicht eine feingranulare Kontrolle, wenn Eingabe- und Ausgabedaten unterschiedliche Skalierungsstrategien erfordern.

Die Funktion verändert den übergebenen Trainingsdatensatz in-place. Der Datensatz muss zuvor mit fann_read_train_from_file oder fann_create_train erstellt worden sein.

Parameter

Name Typ Default Beschreibung
$train_data Pflicht resource Eine gültige FANN-Trainingsdaten-Ressource, wie sie von fann_read_train_from_file() oder fann_create_train() zurückgegeben wird.
$new_min Pflicht float Der neue Minimalwert des Ausgabebereichs nach der Skalierung, z. B. -1.0 oder 0.0.
$new_max Pflicht float Der neue Maximalwert des Ausgabebereichs nach der Skalierung, z. B. 1.0.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Skalierung erfolgreich war, andernfalls false (z. B. bei einer ungültigen Ressource oder wenn new_min >= new_max).

Beispiele

Ausgaben eines Trainingsdatensatzes auf [0, 1] skalieren

<?php
// Trainingsdaten aus Datei laden
$train_data = fann_read_train_from_file('training.data');

if ($train_data) {
    // Nur die Ausgabewerte auf den Bereich [0.0, 1.0] skalieren
    // passend für Sigmoid-Aktivierungsfunktion
    $result = fann_scale_output_train_data($train_data, 0.0, 1.0);

    if ($result) {
        echo "Ausgaben erfolgreich auf [0, 1] skaliert." . PHP_EOL;
    } else {
        echo "Skalierung fehlgeschlagen." . PHP_EOL;
    }

    fann_destroy_train($train_data);
} else {
    echo "Trainingsdaten konnten nicht geladen werden." . PHP_EOL;
}
Ausgaben erfolgreich auf [0, 1] skaliert.

Getrennte Skalierung von Eingaben und Ausgaben

<?php
// Trainingsdaten laden
$train_data = fann_read_train_from_file('sensor_data.data');

if ($train_data) {
    // Eingaben auf [-1, 1] skalieren (z. B. für tanh-Aktivierung in der Eingabeschicht)
    fann_scale_input_train_data($train_data, -1.0, 1.0);

    // Ausgaben auf [0, 1] skalieren (z. B. für Sigmoid-Aktivierung in der Ausgabeschicht)
    fann_scale_output_train_data($train_data, 0.0, 1.0);

    echo "Eingaben und Ausgaben getrennt skaliert." . PHP_EOL;

    // Netz erstellen und trainieren
    $ann = fann_create_standard(3, 4, 6, 1);
    fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output($ann, FANN_SIGMOID);
    fann_train_on_data($ann, $train_data, 500, 10, 0.001);

    fann_destroy($ann);
    fann_destroy_train($train_data);
}
Eingaben und Ausgaben getrennt skaliert.

// Wichtig · Fallstricke

In-place-Änderung: Die Funktion verändert den Trainingsdatensatz direkt. Soll der Originaldatensatz erhalten bleiben, muss er vorher kopiert oder erneut geladen werden.

Bereichsgrenzen: new_min muss strikt kleiner als new_max sein, sonst schlägt die Funktion fehl. Eine Überprüfung der Eingabewerte vor dem Aufruf ist ratsam.

Abhängigkeit: Diese Funktion steht nur zur Verfügung, wenn PHP mit der FANN-Erweiterung kompiliert wurde (pecl install fann). Die FANN-Bibliothek muss auf dem System installiert sein.

Konsistenz beim Inferenz: Wenn die Ausgaben der Trainingsdaten skaliert wurden, müssen die Vorhersagen des trainierten Netzes mit derselben inversen Skalierung zurücktransformiert werden, um sinnvolle Ergebnisse zu erhalten.