Signatur
Beschreibung
fann_create_standard_array ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) für PHP und erzeugt ein mehrschichtiges, vollständig verbundenes neuronales Netz. Im Gegensatz zu fann_create_standard, das variable Argumente verwendet, übergeben Sie hier die Schichtgrößen bequem als PHP-Array.
Der Parameter $num_layers gibt an, wie viele Schichten das Netz besitzen soll (Eingabeschicht + versteckte Schichten + Ausgabeschicht). Das Array $layers enthält für jede Schicht die Anzahl der Neuronen. Die Verbindungen zwischen benachbarten Schichten sind vollständig – jedes Neuron einer Schicht ist mit jedem Neuron der nächsten Schicht verbunden.
Diese Variante eignet sich besonders, wenn die Netzarchitektur zur Laufzeit dynamisch aus Konfigurationsdaten zusammengestellt wird, da Arrays einfacher programmatisch aufgebaut werden können als eine variable Argumentliste.
Das zurückgegebene FANN-Resource-Handle wird anschließend für Training (fann_train_on_data), Ausführung (fann_run) und Speicherung (fann_save) verwendet. Nach der Verwendung sollte die Ressource mit fann_destroy freigegeben werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $num_layers Pflicht | int | Die Gesamtanzahl der Schichten im Netzwerk (mindestens 2: Eingabe- und Ausgabeschicht). Muss mit der Länge des $layers-Arrays übereinstimmen. |
|
| $layers Pflicht | array | Numerisch indiziertes Array, das für jede Schicht die Anzahl der Neuronen enthält. Beispiel: [2, 3, 1] erstellt ein Netz mit 2 Eingabe-, 3 versteckten und 1 Ausgabeneuron. |
Rückgabewert
false zurückgegeben.Beispiele
Einfaches XOR-Netz erstellen und trainieren
<?php
// XOR-Netzwerk: 2 Eingaben, 3 versteckte Neuronen, 1 Ausgabe
$layers = [2, 3, 1];
$num_layers = count($layers);
$ann = fann_create_standard_array($num_layers, $layers);
if ($ann === false) {
die('Fehler beim Erstellen des neuronalen Netzes.');
}
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);
// Training auf XOR-Daten
$train_data = fann_read_train_from_file('xor.data');
if ($train_data) {
fann_train_on_data($ann, $train_data, 500, 100, 0.001);
fann_save($ann, 'xor.net');
fann_destroy_train($train_data);
}
fann_destroy($ann);
echo 'Netz erfolgreich erstellt und gespeichert.';
?>
Netzarchitektur dynamisch aus Konfiguration aufbauen
<?php
// Konfiguration z. B. aus einer Datenbank oder Config-Datei
$config = [
'input_neurons' => 4,
'hidden_layers' => [8, 6],
'output_neurons' => 3,
];
// Array dynamisch zusammenbauen
$layers = array_merge(
[$config['input_neurons']],
$config['hidden_layers'],
[$config['output_neurons']]
);
$ann = fann_create_standard_array(count($layers), $layers);
if ($ann) {
echo 'Netz mit ' . count($layers) . ' Schichten erstellt.' . PHP_EOL;
echo 'Schichten: ' . implode(' -> ', $layers) . PHP_EOL;
fann_destroy($ann);
} else {
echo 'Fehler beim Erstellen des Netzes.' . PHP_EOL;
}
?>
// Wichtig · Fallstricke
Voraussetzung: Die FANN-PHP-Erweiterung (php-fann) muss installiert und aktiviert sein. Sie ist nicht Teil der PHP-Standarddistribution und muss separat über PECL oder die jeweilige Paketverwaltung installiert werden.
Ressourcen-Verwaltung: Jede mit fann_create_standard_array erstellte Ressource belegt Arbeitsspeicher. Rufen Sie immer fann_destroy($ann) auf, wenn das Netz nicht mehr benötigt wird, um Speicherlecks zu vermeiden.
Konsistenz: Der Wert von $num_layers muss exakt mit count($layers) übereinstimmen, da inkonsistente Werte zu undefiniertem Verhalten oder einem Fehler führen können.