Start · Sprachen · PHP · Referenz · fann_create_sparse

fann_create_sparse

Funktion

Erstellt ein nicht vollständig verbundenes Standard-Backpropagation-Netzwerk mit der angegebenen Verbindungsrate und Schichtstruktur.

Kategorie: misc

Signatur

fann_create_sparse(float $connection_rate, int $num_layers, int ...$layers): resource|false

Beschreibung

fann_create_sparse erzeugt ein künstliches neuronales Netz (ANN) vom Typ Feedforward-Backpropagation, bei dem nicht alle Neuronen benachbarter Schichten miteinander verbunden sind. Die Verbindungsdichte wird über den Parameter connection_rate gesteuert: Ein Wert von 1.0 entspricht einem vollständig verbundenen Netz (wie bei fann_create_standard), während kleinere Werte eine zufällige Auswahl an Verbindungen erzeugen.

Die Funktion gehört zur FANN-Erweiterung (Fast Artificial Neural Network Library) für PHP und erfordert, dass ext-fann installiert und aktiviert ist. Der Rückgabewert ist eine FANN-Ressource, die für alle weiteren FANN-Operationen wie Training, Evaluation und Speicherung verwendet wird.

Sparse Networks eignen sich besonders dann, wenn das Training beschleunigt werden soll, wenn Überanpassung (Overfitting) vermieden werden soll oder wenn ein großes Netz mit vertretbarem Rechenaufwand betrieben werden muss. Die zufällig ausgelassenen Verbindungen wirken ähnlich wie eine Art strukturelle Regularisierung.

Die Schichten werden als einzelne Integer-Argumente nach num_layers übergeben. Jeder Wert gibt die Anzahl der Neuronen in der jeweiligen Schicht an (Eingabe-, versteckte und Ausgabeschichten).

Parameter

Name Typ Default Beschreibung
$connection_rate Pflicht float Verbindungsrate zwischen 0.0 und 1.0. Gibt an, welcher Anteil der möglichen Verbindungen zwischen benachbarten Schichten tatsächlich erstellt wird. 1.0 erzeugt ein vollständig verbundenes Netz.
$num_layers Pflicht int Gesamtanzahl der Schichten im Netz, einschließlich Eingabe- und Ausgabeschicht.
$layers Pflicht int Variadic-Argumente: Für jede Schicht wird die Anzahl der Neuronen als Integer übergeben. Es müssen exakt num_layers solcher Werte angegeben werden.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt eine FANN-Netzwerk-Ressource zurück, die für alle weiteren FANN-Funktionen verwendet werden kann. Im Fehlerfall (z. B. ungültige Parameter oder fehlende Erweiterung) wird false zurückgegeben.

Beispiele

Einfaches Sparse-Netzwerk erstellen und Verbindungsrate prüfen

<?php
// Erstellt ein Netz mit 70 % Verbindungsrate,
// 3 Schichten: 4 Eingabe-, 8 versteckte und 2 Ausgabeneuronen
$connection_rate = 0.7;
$num_layers = 3;
$ann = fann_create_sparse($connection_rate, $num_layers, 4, 8, 2);

if ($ann === false) {
    echo "Fehler beim Erstellen des Netzwerks.\n";
} else {
    echo "Netzwerk erfolgreich erstellt.\n";
    echo "Anzahl Verbindungen: " . fann_get_total_connections($ann) . "\n";
    fann_destroy($ann);
}
Netzwerk erfolgreich erstellt. Anzahl Verbindungen: 45

Sparse-Netzwerk trainieren und speichern

<?php
// Sparse-Netzwerk mit 50 % Verbindungsrate erstellen
$ann = fann_create_sparse(0.5, 3, 2, 4, 1);

if ($ann !== false) {
    // Trainingsdaten laden (XOR-Beispiel)
    $train_data = fann_read_train_from_file('xor.data');

    if ($train_data !== false) {
        // Netzwerk trainieren
        fann_train_on_data($ann, $train_data, 500, 10, 0.001);
        fann_save($ann, 'sparse_xor.net');
        echo "Training abgeschlossen und Netz gespeichert.\n";
        fann_destroy_train($train_data);
    } else {
        echo "Trainingsdaten konnten nicht geladen werden.\n";
    }

    fann_destroy($ann);
}
Training abgeschlossen und Netz gespeichert.

// Wichtig · Fallstricke

Voraussetzung: Die FANN-PHP-Erweiterung (ext-fann) muss installiert sein. Diese ist nicht im PHP-Standardumfang enthalten und muss separat über PECL oder den Paketmanager des Betriebssystems installiert werden (pecl install fann).

Ressourcenverwaltung: Das erstellte Netzwerk belegt Speicher und muss nach der Verwendung explizit mit fann_destroy() freigegeben werden, um Speicherlecks zu vermeiden.

Reproduzierbarkeit: Da die Verbindungen beim Erstellen eines Sparse-Netzes zufällig ausgewählt werden, kann das Netz bei jedem Aufruf eine leicht andere Struktur aufweisen. Dies kann das Training und die Ergebnisse beeinflussen. Für reproduzierbare Experimente sollte ggf. ein eigener Zufallszahlenseed gesetzt werden.

Wahl der Verbindungsrate: Zu niedrige Werte (z. B. unter 0.3) können dazu führen, dass das Netz nicht ausreichend Kapazität besitzt, um komplexe Funktionen zu erlernen. Für die meisten Anwendungsfälle sind Werte zwischen 0.5 und 0.9 sinnvoll.