Start · Sprachen · PHP · Referenz · fann_create_standard_array

fann_create_standard_array

Funktion

Erstellt ein vollständig verbundenes Backpropagation-Netzwerk (ANN) anhand eines Arrays, das die Anzahl der Neuronen pro Schicht definiert.

Kategorie: misc

Signatur

fann_create_standard_array(int $num_layers, array $layers): resource|false

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

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine FANN-Ressource zurück, die das erstellte neuronale Netz repräsentiert. Im Fehlerfall (z. B. ungültige Parameter oder FANN nicht verfügbar) wird 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.';
?>
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;
}
?>
Netz mit 4 Schichten erstellt. Schichten: 4 -> 8 -> 6 -> 3

// 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.