Start · Sprachen · PHP · Referenz · fann_create_standard

fann_create_standard

Funktion

Erstellt ein vollständig verbundenes Standard-Backpropagation-Netzwerk (künstliches neuronales Netz) mit der angegebenen Anzahl von Schichten und Neuronen.

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_create_standard(int $num_layers, int $num_neurons1, int ...$num_neurons): resource|false

Beschreibung

fann_create_standard() gehört zur FANN-Erweiterung (Fast Artificial Neural Network) und erzeugt ein vollständig verbundenes neuronales Netz im klassischen Feedforward-Aufbau. Dabei ist jedes Neuron einer Schicht mit jedem Neuron der nächsten Schicht verbunden (Dense-Architektur).

Die Funktion erwartet zunächst die Gesamtzahl der Schichten ($num_layers), gefolgt von der Anzahl der Neuronen in jeder einzelnen Schicht als separate Integer-Argumente. Das erste Schicht-Argument entspricht dem Eingabe-Layer, das letzte dem Ausgabe-Layer; alle Argumente dazwischen definieren versteckte Schichten (Hidden Layers).

Das zurückgegebene Netz-Resource-Handle wird anschließend für das Training, das Speichern und die Ausführung von Vorhersagen mit anderen FANN-Funktionen verwendet, z. B. fann_train_on_file() oder fann_run(). Nach der Verwendung sollte das Netz mit fann_destroy() freigegeben werden.

Diese Funktion ist besonders für Einsteiger in die neuronale Netzwerkprogrammierung mit PHP geeignet, da sie ohne aufwendige Konfiguration ein einsatzbereites Netz mit Standardparametern erstellt.

Parameter

Name Typ Default Beschreibung
$num_layers Pflicht int Die Gesamtzahl der Schichten im neuronalen Netz, einschließlich Eingabe-, versteckter und Ausgabeschicht. Muss mindestens 2 betragen.
$num_neurons1 Pflicht int Anzahl der Neuronen in der ersten Schicht (Eingabeschicht). Muss der Anzahl der Eingabe-Features des Datensatzes entsprechen.
$... Pflicht int Weitere Integer-Argumente, je eines pro restlicher Schicht. Die Anzahl der übergebenen Argumente muss exakt $num_layers entsprechen. Das letzte Argument definiert die Ausgabeschicht.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt im Erfolgsfall ein FANN-Netz-Resource-Handle zurück, das für weitere FANN-Funktionen verwendet werden kann. Bei einem Fehler (z. B. ungültige Parameter) wird false zurückgegeben.

Beispiele

Einfaches 3-Schicht-Netz für XOR-Problem erstellen

<?php
// Netz mit 3 Schichten: 2 Eingabe-Neuronen, 3 versteckte Neuronen, 1 Ausgabe-Neuron
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    echo "Neuronales Netz erfolgreich erstellt.\n";
    echo "Anzahl Schichten: " . fann_get_num_layers($ann) . "\n";
    echo "Anzahl Eingaben:  " . fann_get_num_input($ann) . "\n";
    echo "Anzahl Ausgaben:  " . fann_get_num_output($ann) . "\n";
    fann_destroy($ann);
} else {
    echo "Fehler beim Erstellen des Netzes.\n";
}
Neuronales Netz erfolgreich erstellt. Anzahl Schichten: 3 Anzahl Eingaben: 2 Anzahl Ausgaben: 1

Netz trainieren und Vorhersage durchführen

<?php
// Netz für ein XOR-Problem: 2 Eingaben, eine versteckte Schicht mit 4 Neuronen, 1 Ausgabe
$ann = fann_create_standard(3, 2, 4, 1);

if ($ann) {
    // Aktivierungsfunktion für versteckte und Ausgabeschicht setzen
    fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

    // Training mit einer FANN-Datei (xor.data muss vorhanden sein)
    $train_file = __DIR__ . '/xor.data';
    if (file_exists($train_file)) {
        fann_train_on_file($ann, $train_file, 500, 10, 0.0001);
        echo "Training abgeschlossen.\n";

        // Vorhersage für XOR(1, 0)
        $result = fann_run($ann, [1.0, 0.0]);
        echo "XOR(1, 0) = " . round($result[0]) . "\n";
    }

    fann_destroy($ann);
}
Training abgeschlossen. XOR(1, 0) = 1

// Wichtig · Fallstricke

Voraussetzung: Die FANN-PHP-Erweiterung muss installiert und in der php.ini aktiviert sein (extension=fann). Die Bibliothek ist nicht standardmäßig enthalten und muss über PECL oder den Paketmanager des Betriebssystems nachinstalliert werden.

Ressourcen freigeben: Da fann_create_standard() eine interne C-Ressource anlegt, sollte nach der Verwendung immer fann_destroy() aufgerufen werden, um Speicherlecks zu vermeiden — insbesondere bei lang laufenden Skripten.

Anzahl der Argumente: Die Gesamtzahl der nach $num_layers übergebenen Integer-Argumente muss exakt dem Wert von $num_layers entsprechen, andernfalls schlägt die Funktion fehl oder liefert ein unbrauchbares Netz.

Alternativen: Für dünn besetzte Netzwerke oder spezielle Topologien stehen fann_create_sparse() und fann_create_shortcut() zur Verfügung.