Signatur
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
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.';
}
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.';
// 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.