Start · Sprachen · PHP · Referenz · fann_get_total_connections

fann_get_total_connections

Funktion

Gibt die Gesamtzahl der Verbindungen (Gewichtsverbindungen) in einem FANN-Netzwerk zurück.

seit PHP 5.6.0 Kategorie: misc

Signatur

fann_get_total_connections(resource $ann): int

Beschreibung

fann_get_total_connections() ist Teil der PHP-FANN-Erweiterung (Fast Artificial Neural Network) und liefert die Gesamtzahl aller gewichteten Verbindungen im angegebenen neuronalen Netzwerk. Jede Verbindung zwischen zwei Neuronen (inklusive der Bias-Verbindungen) wird dabei gezählt.

Diese Funktion ist nützlich, um die Komplexität eines Netzwerks einzuschätzen. Je mehr Verbindungen ein Netzwerk besitzt, desto mehr Parameter müssen beim Training optimiert werden und desto mehr Speicher wird benötigt. Vor allem bei großen Netzwerken hilft diese Funktion dabei, die Architektur zu überwachen und ggf. zu vereinfachen.

Typische Einsatzgebiete sind das Debugging der Netzwerkstruktur, Logging während des Trainings sowie der Vergleich verschiedener Netzwerktopologien hinsichtlich ihrer Größe und Komplexität.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine FANN-Netzwerk-Ressource, die zuvor mit Funktionen wie fann_create_standard() oder fann_create_from_file() erstellt wurde.

Rückgabewert

Typ
int
Beschreibung
Gibt die Gesamtzahl aller gewichteten Verbindungen im Netzwerk als ganzzahligen Wert zurück. Bei einem ungültigen Netzwerk-Handle kann es zu einem Fehler kommen.

Beispiele

Verbindungsanzahl eines einfachen Netzwerks ausgeben

<?php
// Netzwerk mit 3 Schichten: 2 Eingaben, 3 verdeckte Neuronen, 1 Ausgabe
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    $total = fann_get_total_connections($ann);
    echo "Gesamtzahl der Verbindungen: " . $total . PHP_EOL;
    fann_destroy($ann);
} else {
    echo "Fehler beim Erstellen des Netzwerks." . PHP_EOL;
}
?>
Gesamtzahl der Verbindungen: 13

Vergleich zweier Netzwerktopologien

<?php
// Kleines Netzwerk
$annSmall = fann_create_standard(3, 2, 4, 1);
// Größeres Netzwerk
$annLarge = fann_create_standard(4, 2, 8, 8, 1);

if ($annSmall && $annLarge) {
    $connectionsSmall = fann_get_total_connections($annSmall);
    $connectionsLarge = fann_get_total_connections($annLarge);

    echo "Kleines Netzwerk: " . $connectionsSmall . " Verbindungen" . PHP_EOL;
    echo "Großes Netzwerk:  " . $connectionsLarge . " Verbindungen" . PHP_EOL;
    echo "Faktor: " . round($connectionsLarge / $connectionsSmall, 2) . "x komplexer" . PHP_EOL;

    fann_destroy($annSmall);
    fann_destroy($annLarge);
}
?>
Kleines Netzwerk: 17 Verbindungen Großes Netzwerk: 97 Verbindungen Faktor: 5.71x komplexer

// Wichtig · Fallstricke

Voraussetzung: Die FANN-Erweiterung muss installiert und aktiviert sein (pecl install fann). Sie ist nicht standardmäßig in PHP enthalten.

Die zurückgegebene Anzahl umfasst auch Bias-Verbindungen, also die Verbindungen von den Bias-Neuronen jeder Schicht zu den Neuronen der nächsten Schicht. Dies ist beim Vergleich mit manuell berechneten Erwartungswerten zu beachten.

Ressourcen sollten nach der Verwendung stets mit fann_destroy() freigegeben werden, um Speicherlecks zu vermeiden.