Signatur
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
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";
}
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);
}
// 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.