Start · Sprachen · PHP · Referenz · fann_get_connection_array

fann_get_connection_array

Funktion

Gibt ein Array mit allen Verbindungen (Gewichten) im FANN-Netzwerk zurück.

seit PHP 5.6.0 Kategorie: misc

Signatur

fann_get_connection_array(resource $ann): array

Beschreibung

fann_get_connection_array() liefert ein Array, das alle Verbindungen eines FANN-Neuronalen-Netzwerks beschreibt. Jede Verbindung wird als assoziatives Array mit den Schlüsseln from_neuron, to_neuron und weight dargestellt.

Die Funktion ist nützlich, wenn man den internen Zustand eines trainierten Netzwerks inspizieren, serialisieren oder manuell analysieren möchte. Zusammen mit fann_set_weight_array() lassen sich Gewichte gezielt verändern und zurückschreiben, was etwa beim Fine-Tuning oder beim Transfer von Gewichten zwischen Netzwerken hilfreich ist.

Das zurückgegebene Array enthält für jede Synapse des Netzwerks einen Eintrag. Die Neuronen werden dabei fortlaufend nummeriert, beginnend mit den Eingabe-Neuronen, gefolgt von versteckten Neuronen und schließlich den Ausgabe-Neuronen. Bias-Verbindungen sind ebenfalls enthalten.

Voraussetzung für die Nutzung dieser Funktion ist, dass die FANN-Extension (Free Artificial Neural Network Library) installiert und aktiviert ist.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Netzwerk-Ressource, die zuvor z. B. mit fann_create_standard() oder fann_create_from_file() erzeugt wurde.

Rückgabewert

Typ
array
Beschreibung
Gibt ein indiziertes Array zurück, wobei jedes Element ein assoziatives Array mit den Schlüsseln from_neuron (int, Quell-Neuron-Index), to_neuron (int, Ziel-Neuron-Index) und weight (float, Verbindungsgewicht) enthält. Im Fehlerfall wird false zurückgegeben.

Beispiele

Alle Verbindungen eines trainierten Netzwerks ausgeben

<?php
// Netzwerk erstellen: 2 Eingänge, 1 versteckte Schicht mit 3 Neuronen, 1 Ausgang
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    $connections = fann_get_connection_array($ann);

    foreach ($connections as $conn) {
        printf(
            "Von Neuron %d → Neuron %d | Gewicht: %.6f\n",
            $conn['from_neuron'],
            $conn['to_neuron'],
            $conn['weight']
        );
    }

    fann_destroy($ann);
} else {
    echo "Fehler beim Erstellen des Netzwerks.\n";
}
?>
Von Neuron 0 → Neuron 3 | Gewicht: 0.000000 Von Neuron 1 → Neuron 3 | Gewicht: 0.000000 Von Neuron 2 → Neuron 3 | Gewicht: 0.000000 ...

Gewichte eines trainierten Netzwerks sichern und wiederherstellen

<?php
// Netzwerk aus Datei laden
$ann = fann_create_from_file('xor_trained.net');

if ($ann) {
    // Aktuelle Verbindungen auslesen und speichern
    $connections = fann_get_connection_array($ann);
    file_put_contents('weights_backup.json', json_encode($connections));

    echo "Gespeicherte Verbindungen: " . count($connections) . "\n";

    // Beispiel: Gewichte aus Backup wiederherstellen
    $restored = json_decode(file_get_contents('weights_backup.json'), true);
    fann_set_weight_array($ann, $restored);

    echo "Gewichte erfolgreich wiederhergestellt.\n";

    fann_destroy($ann);
} else {
    echo "Netzwerk konnte nicht geladen werden.\n";
}
?>
Gespeicherte Verbindungen: 9 Gewichte erfolgreich wiederhergestellt.

// Wichtig · Fallstricke

Hinweis zur Extension: fann_get_connection_array() ist Teil der PECL-Extension fann. Diese muss separat installiert werden (z. B. über pecl install fann) und ist in Standard-PHP-Installationen nicht enthalten. Ab PHP 8.0 sollte die Kompatibilität der Extension geprüft werden, da PECL-Extensions nicht immer zeitgleich aktualisiert werden.

Bias-Neuronen: Das zurückgegebene Array enthält auch Verbindungen von Bias-Neuronen. Bei der manuellen Analyse der Indizes sollte dies berücksichtigt werden, da die Nummerierung dadurch von der rein schichtbasierten Zählung abweichen kann.