Start · Sprachen · PHP · Referenz · fann_descale_input

fann_descale_input

Funktion

Skaliert einen Eingabevektor anhand zuvor berechneter Skalierungsparameter zurück in den ursprünglichen Wertebereich.

Kategorie: misc

Signatur

fann_descale_input(resource $ann, array $input_vector): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
Skaliert: -0.5, 1, 0.5 Zurückskaliert: 25, 100, 0.75

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);
?>
Zurückskalierter Eingabevektor: 42, 7.5

// 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.