Signatur
Beschreibung
FANNConnection ist eine Klasse der FANN-Erweiterung (Fast Artificial Neural Network), die eine einzelne synaptische Verbindung zwischen zwei Neuronen in einem neuronalen Netz abbildet. Jede Verbindung besitzt einen Quell-Neuron-Index, einen Ziel-Neuron-Index und ein zugehöriges Gewicht (Weight).
Instanzen dieser Klasse werden typischerweise nicht manuell erzeugt, sondern von Funktionen wie fann_get_connection_array() zurückgegeben, die alle Verbindungen eines bestehenden neuronalen Netzes als Array von FANNConnection-Objekten liefern. Das ermöglicht eine detaillierte Inspektion der Netzwerkarchitektur und der aktuellen Gewichte.
Umgekehrt können FANNConnection-Objekte auch manuell erstellt und über fann_set_weight_array() genutzt werden, um gezielt Gewichte im Netz zu setzen – praktisch beim Initialisieren oder Wiederherstellen eines trainierten Modells aus einer externen Quelle.
Die Klasse gehört zur PECL-Erweiterung fann, die separat installiert werden muss und auf der C-Bibliothek libfann basiert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $from_neuron Pflicht | int | Index des Quell-Neurons, von dem die Verbindung ausgeht. | |
| $to_neuron Pflicht | int | Index des Ziel-Neurons, zu dem die Verbindung führt. | |
| $weight Pflicht | float | Das Gewicht der Verbindung als Fließkommazahl. Positive Werte wirken verstärkend, negative hemmend. |
Beispiele
Alle Verbindungen eines FANN-Netzes auslesen
<?php
// Einfaches FANN-Netz erstellen: 2 Eingabe-, 3 versteckte und 1 Ausgabe-Neuron
$ann = fann_create_standard(3, 2, 3, 1);
// Alle Verbindungen als Array von FANNConnection-Objekten abrufen
$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);
Verbindungsgewichte manuell setzen mit FANNConnection
<?php
// Netz erstellen
$ann = fann_create_standard(3, 2, 3, 1);
// Bestehende Verbindungen laden und Gewichte gezielt anpassen
$connections = fann_get_connection_array($ann);
$modifiedConnections = [];
foreach ($connections as $conn) {
// Alle Gewichte auf einen festen Wert setzen (z. B. für Tests)
$modifiedConnections[] = new FANNConnection(
$conn->from_neuron,
$conn->to_neuron,
0.5
);
}
// Modifizierte Gewichte ins Netz schreiben
fann_set_weight_array($ann, $modifiedConnections);
echo "Gewichte erfolgreich gesetzt.\n";
fann_destroy($ann);
// Wichtig · Fallstricke
Voraussetzungen: Die PECL-Erweiterung fann muss installiert und in der php.ini aktiviert sein. Die Installation erfolgt über pecl install fann. Auf dem System muss außerdem die C-Bibliothek libfann vorhanden sein.
Neuron-Indizes: Die Indizes from_neuron und to_neuron beziehen sich auf die interne Neuronen-Nummerierung des FANN-Netzes und schließen auch Bias-Neuronen ein. Falsche Indizes beim manuellen Erstellen von FANNConnection-Objekten können zu unerwartetem Verhalten führen.
Öffentliche Eigenschaften: Die drei Eigenschaften from_neuron, to_neuron und weight sind öffentlich zugänglich und können direkt gelesen und geschrieben werden.