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