Start · Sprachen · PHP · Referenz · FANNConnection

FANNConnection

Klasse

Repräsentiert eine einzelne Verbindung zwischen zwei Neuronen in einem FANN-Netz und wird etwa von <code>fann_get_connection_array()</code> zurückgegeben.

seit PHP 5.6.0 Kategorie: misc

Signatur

class FANNConnection

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);
Von Neuron 0 -> Neuron 3: Gewicht = 0.123456 Von Neuron 1 -> Neuron 3: Gewicht = -0.654321 ...

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);
Gewichte erfolgreich gesetzt.

// 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.