Signatur
Beschreibung
fann_run ist die zentrale Inferenz-Funktion der FANN-Erweiterung (Fast Artificial Neural Network). Sie propagiert einen gegebenen Eingabe-Vektor durch alle Schichten des Netzwerks und liefert den resultierenden Ausgabe-Vektor zurück. Das Netzwerk muss zuvor mit fann_create_standard (oder einer ähnlichen Funktion) erstellt und idealerweise mit fann_train_on_file oder fann_train_on_data trainiert worden sein.
Der Eingabe-Array muss exakt so viele Elemente enthalten, wie das Netzwerk Eingabe-Neuronen besitzt. Die zurückgegebenen Ausgabewerte liegen je nach verwendeter Aktivierungsfunktion typischerweise im Bereich zwischen –1 und 1 (bei FANN_SIGMOID_SYMMETRIC) oder zwischen 0 und 1 (bei FANN_SIGMOID).
Typische Anwendungsfälle sind Klassifikation (z. B. Bilderkennung, Spam-Filter), Regression oder allgemeine Vorhersageaufgaben, bei denen ein trainiertes Modell auf neue Daten angewendet wird.
Hinweis: Die FANN-Erweiterung muss separat installiert sein (pecl install fann). Ab PHP 8 ist die prozedural-orientierte FANN-Extension zugunsten objektorientierter Alternativen seltener im Einsatz, bleibt aber weiterhin nutzbar.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Netzwerk-Ressource, die z. B. mit fann_create_standard oder fann_create_from_file erzeugt wurde. |
|
| $input Pflicht | array | Ein indizierter Array mit numerischen Eingabewerten. Die Anzahl der Elemente muss exakt der Anzahl der Eingabe-Neuronen des Netzwerks entsprechen. |
Rückgabewert
false zurückgegeben.Beispiele
Einfache XOR-Inferenz mit einem trainierten FANN-Netzwerk
<?php
// Netzwerk aus gespeicherter Datei laden
$ann = fann_create_from_file('xor_trained.net');
if ($ann === false) {
die('Netzwerk konnte nicht geladen werden.');
}
// XOR-Eingaben testen
$inputs = [
[0.0, 0.0],
[0.0, 1.0],
[1.0, 0.0],
[1.0, 1.0],
];
foreach ($inputs as $input) {
$output = fann_run($ann, $input);
if ($output !== false) {
printf(
"Eingabe: [%.0f, %.0f] => Ausgabe: %.4f\n",
$input[0],
$input[1],
$output[0]
);
}
}
fann_destroy($ann);
Netzwerk erstellen, trainieren und Ausgabe auswerten
<?php
// Netzwerk mit 2 Eingabe-, 3 versteckten und 1 Ausgabe-Neuron erstellen
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Aktivierungsfunktionen setzen
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);
// Training anhand einer Datei (XOR-Daten)
fann_train_on_file($ann, 'xor.data', 500, 10, 0.001);
// Inferenz durchführen
$result = fann_run($ann, [1.0, 0.0]);
if ($result !== false) {
echo 'Ausgabe (1 XOR 0): ' . round($result[0]) . PHP_EOL;
} else {
echo 'Fehler bei der Ausführung.' . PHP_EOL;
}
fann_save($ann, 'xor_trained.net');
fann_destroy($ann);
}
// Wichtig · Fallstricke
Eingabe-Länge beachten: Die Länge des input-Arrays muss exakt mit der Anzahl der Eingabe-Neuronen übereinstimmen, die beim Erstellen des Netzwerks angegeben wurden. Stimmt die Anzahl nicht überein, gibt fann_run false zurück und erzeugt einen PHP-Fehler.
Ressourcen freigeben: Nach der Nutzung des Netzwerks sollte fann_destroy aufgerufen werden, um den allokierten Speicher freizugeben.
Verfügbarkeit: Die FANN-Erweiterung ist kein Bestandteil der PHP-Standardinstallation und muss über PECL installiert werden (pecl install fann). Für produktive Anwendungen in PHP 8+ sollte der Einsatz objektorientierter Machine-Learning-Bibliotheken in Betracht gezogen werden.