Start · Sprachen · PHP · Referenz · fann_destroy

fann_destroy

Funktion

Zerstört ein FANN-Netzwerk-Objekt vollständig und gibt den damit verbundenen Speicher frei.

Kategorie: misc

Signatur

fann_destroy(resource $ann): bool

Beschreibung

fann_destroy gibt alle Ressourcen frei, die einem mit der FANN-Bibliothek (Fast Artificial Neural Network) erstellten neuronalen Netzwerk zugeordnet sind. Die Funktion sollte immer aufgerufen werden, wenn ein Netzwerk nicht mehr benötigt wird, um Speicherlecks zu vermeiden.

In PHP-Skripten wird der Speicher zwar beim Skriptende automatisch freigegeben, dennoch ist es gute Praxis, fann_destroy explizit aufzurufen – insbesondere in langlaufenden Prozessen, CLI-Anwendungen oder Situationen, in denen mehrere Netzwerke nacheinander erstellt und verworfen werden.

Typischerweise wird fann_destroy am Ende eines Trainings- oder Inferenzworkflows aufgerufen, nachdem das Netzwerk z. B. mit fann_save gespeichert oder Ergebnisse ausgewertet wurden. Nach dem Aufruf ist die übergebene Ressource ungültig und darf nicht mehr verwendet werden.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Netzwerk-Ressource, wie sie z. B. von fann_create_standard, fann_create_from_file oder ähnlichen Funktionen zurückgegeben wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück. Falls die übergebene Ressource ungültig ist oder ein Fehler auftritt, wird false zurückgegeben.

Beispiele

Netzwerk erstellen, trainieren und anschließend zerstören

<?php
// Netzwerk mit 2 Eingabe-, 3 versteckten und 1 Ausgabe-Neuron erstellen
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    // Trainingsparameter setzen
    fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

    // Netzwerk mit Trainingsdatei trainieren
    $train_data = fann_read_train_from_file('xor.data');
    if ($train_data) {
        fann_train_on_data($ann, $train_data, 500, 10, 0.001);
        fann_destroy_train($train_data);
    }

    // Netzwerk speichern
    fann_save($ann, 'xor_trained.net');

    // Speicher freigeben
    if (fann_destroy($ann)) {
        echo 'Netzwerk erfolgreich zerstört.';
    }
} else {
    echo 'Netzwerk konnte nicht erstellt werden.';
}
Netzwerk erfolgreich zerstört.

Mehrere Netzwerke nacheinander erstellen und freigeben

<?php
$configs = [
    [2, 4, 1],
    [3, 6, 2],
    [4, 8, 3],
];

foreach ($configs as $layers) {
    $ann = fann_create_standard(count($layers), ...$layers);

    if ($ann) {
        // Netzwerk verwenden ...
        echo 'Netzwerk mit Konfiguration [' . implode(', ', $layers) . '] erstellt.' . PHP_EOL;

        // Ressource freigeben, bevor die nächste Iteration beginnt
        fann_destroy($ann);
    }
}

echo 'Alle Netzwerke wurden verarbeitet und freigegeben.';
Netzwerk mit Konfiguration [2, 4, 1] erstellt. Netzwerk mit Konfiguration [3, 6, 2] erstellt. Netzwerk mit Konfiguration [4, 8, 3] erstellt. Alle Netzwerke wurden verarbeitet und freigegeben.

// Wichtig · Fallstricke

Wichtig: Nach dem Aufruf von fann_destroy darf die Ressource nicht mehr verwendet werden. Jeder weitere Zugriff auf die zerstörte Ressource führt zu einem Fehler oder undefiniertem Verhalten.

Die FANN-Extension für PHP ist eine Erweiterung, die separat installiert werden muss (PECL-Paket fann). Stellen Sie sicher, dass die Erweiterung korrekt kompiliert und aktiviert ist, bevor Sie FANN-Funktionen verwenden.

Vergessen Sie nicht, auch Trainingsdaten-Ressourcen mit fann_destroy_train freizugeben – fann_destroy gibt nur das Netzwerk selbst, nicht die Trainingsdaten frei.