Start · Sprachen · PHP · Referenz · fann_create_from_file

fann_create_from_file

Funktion

Lädt ein zuvor gespeichertes FANN-Netzwerk aus einer Konfigurationsdatei und gibt eine Netzwerk-Ressource zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_create_from_file(string $configuration_file): resource|false

Beschreibung

fann_create_from_file() ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) für PHP und ermöglicht es, ein vollständig konfiguriertes Backpropagation-Netzwerk aus einer Datei zu laden, die zuvor mit fann_save() erstellt wurde. Die geladene Netzwerkstruktur enthält alle Gewichte, Verbindungen und Konfigurationsparameter.

Diese Funktion ist besonders nützlich in Produktivumgebungen, in denen das Netzwerk einmalig trainiert und gespeichert wird, um es später ohne erneutes Training wiederverwenden zu können. Dies spart erhebliche Rechenzeit, da das Training neuronaler Netze typischerweise sehr aufwändig ist.

Die zurückgegebene Ressource kann direkt mit anderen FANN-Funktionen wie fann_run(), fann_test() oder fann_train_on_file() weiterverwendet werden. Am Ende sollte die Ressource stets mit fann_destroy() freigegeben werden, um Speicherlecks zu vermeiden.

Voraussetzung für die Verwendung dieser Funktion ist, dass die PHP-FANN-Erweiterung installiert und aktiviert ist (extension=fann.so bzw. fann.dll).

Parameter

Name Typ Default Beschreibung
$configuration_file Pflicht string Pfad zur Konfigurationsdatei des Netzwerks, die typischerweise mit fann_save() erzeugt wurde. Der Pfad kann absolut oder relativ zum aktuellen Arbeitsverzeichnis sein.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt eine FANN-Netzwerk-Ressource zurück, wenn das Netzwerk erfolgreich aus der Datei geladen wurde. Im Fehlerfall (z. B. Datei nicht gefunden, ungültiges Format) wird false zurückgegeben.

Beispiele

Netzwerk aus Datei laden und für Vorhersagen verwenden

<?php
// Pfad zur gespeicherten Netzwerkkonfiguration
$configFile = '/var/models/mein_netzwerk.net';

// Netzwerk laden
$ann = fann_create_from_file($configFile);

if ($ann === false) {
    echo 'Fehler: Netzwerk konnte nicht geladen werden.';
    exit(1);
}

// Eingabedaten für das Netzwerk (normiert auf [-1, 1])
$input = [0.5, -0.3, 0.8];

// Netzwerk ausführen
$output = fann_run($ann, $input);

echo 'Netzwerk-Ausgabe: ' . implode(', ', $output) . PHP_EOL;

// Ressource freigeben
fann_destroy($ann);
Netzwerk-Ausgabe: 0.92341

Netzwerk trainieren, speichern und wieder laden

<?php
$configFile = '/tmp/xor_netzwerk.net';
$trainFile  = '/tmp/xor.data';

// Neues Netzwerk erstellen: 2 Eingänge, 1 versteckte Schicht (3 Neuronen), 1 Ausgang
$ann = fann_create_standard(3, 2, 3, 1);
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

// Training auf XOR-Daten
fann_train_on_file($ann, $trainFile, 500, 100, 0.001);

// Netzwerk speichern
fann_save($ann, $configFile);
fann_destroy($ann);

echo 'Netzwerk gespeichert.' . PHP_EOL;

// Später: Netzwerk aus Datei laden
$ann2 = fann_create_from_file($configFile);

if ($ann2 !== false) {
    $result = fann_run($ann2, [1.0, 0.0]);
    echo 'XOR(1, 0) = ' . round($result[0]) . PHP_EOL;
    fann_destroy($ann2);
} else {
    echo 'Fehler beim Laden des Netzwerks.' . PHP_EOL;
}
Netzwerk gespeichert. XOR(1, 0) = 1

// Wichtig · Fallstricke

Speicherverwaltung: Die von fann_create_from_file() zurückgegebene Ressource belegt nativen Speicher. Es ist zwingend erforderlich, fann_destroy() aufzurufen, sobald das Netzwerk nicht mehr benötigt wird – auch bei Fehlern im weiteren Programmablauf. Ein try/finally-Block oder eine explizite Prüfung sind empfehlenswert.

Dateiformat: Die Konfigurationsdatei muss im FANN-eigenen Textformat vorliegen. Dateien aus anderen Bibliotheken oder manuell bearbeitete Dateien können zu Ladefehlern oder undefiniertem Verhalten führen.

Kompatibilität: Die FANN-PHP-Erweiterung ist nicht in der PHP-Standardinstallation enthalten und muss separat über PECL installiert werden (pecl install fann). Unter PHP 8.x kann die Verfügbarkeit eingeschränkt sein – vor dem Einsatz sollte die Kompatibilität der installierten Erweiterungsversion geprüft werden.