Signatur
Beschreibung
fann_cascadetrain_on_file() führt ein Cascade-Korrelationstraining (Cascade2) auf einem künstlichen neuronalen Netz durch, wobei die Trainingsdaten direkt aus einer Datei im FANN-Format eingelesen werden. Im Gegensatz zu fann_cascadetrain_on_data() entfällt der separate Schritt des Ladens der Trainingsdaten in eine Datenstruktur.
Beim Cascade2-Algorithmus wird das Netz schrittweise aufgebaut: Es beginnt mit einem minimalen Netz und fügt automatisch neue Neuronen hinzu, bis der gewünschte Fehler erreicht oder die maximale Neuronenanzahl überschritten wird. Dieser Ansatz eignet sich besonders, wenn die optimale Netzgröße für ein Problem unbekannt ist.
Der Parameter neurons_between_reports steuert, wie oft Fortschrittsberichte ausgegeben werden. Ein Wert von 0 unterdrückt alle Berichte, während ein Wert von 1 nach jedem hinzugefügten Neuron eine Ausgabe erzeugt. Die Trainingsdatei muss im FANN-eigenen Textformat vorliegen.
Diese Funktion ist Teil der FANN-Erweiterung (Fast Artificial Neural Network Library) und erfordert, dass PHP mit der FANN-Erweiterung kompiliert wurde. Sie eignet sich für Szenarien, in denen Trainingsdaten dauerhaft auf der Festplatte gespeichert sind und direkt genutzt werden sollen, ohne sie vollständig in den Speicher zu laden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Ressource, die zuvor mit einer der fann_create_*-Funktionen erzeugt wurde. |
|
| $filename Pflicht | string | Pfad zur Trainingsdaten-Datei im FANN-Format. Die Datei muss lesbar sein und dem FANN-Dateiformat entsprechen. | |
| $max_neurons Pflicht | int | Die maximale Anzahl von Neuronen, die dem Netz während des Trainings hinzugefügt werden dürfen. Das Training stoppt, sobald dieser Wert erreicht ist oder der gewünschte Fehler unterschritten wird. | |
| $neurons_between_reports Pflicht | int | Anzahl der Neuronen, nach denen ein Fortschrittsbericht ausgegeben wird. Der Wert 0 unterdrückt alle Berichte. |
|
| $desired_error Pflicht | float | Der gewünschte maximale Fehler (Mean Square Error oder Bit-Fehler, je nach eingestelltem Fehlertyp). Das Training endet, wenn dieser Wert erreicht oder unterschritten wird. |
Rückgabewert
true zurück, wenn das Training erfolgreich abgeschlossen wurde, oder false im Fehlerfall (z. B. wenn die Datei nicht gelesen werden konnte oder die FANN-Ressource ungültig ist).Beispiele
Einfaches Cascade2-Training aus einer Datei
<?php
// Neues neuronales Netz mit 2 Eingabe- und 1 Ausgabeneuron erstellen
$ann = fann_create_shortcut(2, 2, 1);
if ($ann) {
// Cascade-Training direkt aus Datei starten
// Max. 30 Neuronen, Bericht alle 1 Neuron, Ziel-Fehler: 0.001
$result = fann_cascadetrain_on_file(
$ann,
'/pfad/zu/trainingsdaten.data',
30,
1,
0.001
);
if ($result) {
echo "Training erfolgreich abgeschlossen." . PHP_EOL;
echo "MSE nach Training: " . fann_get_MSE($ann) . PHP_EOL;
fann_save($ann, '/pfad/zu/trainiertes_netz.net');
} else {
echo "Fehler beim Training." . PHP_EOL;
}
fann_destroy($ann);
} else {
echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
?>
Cascade2-Training mit angepassten Parametern und Fehlertyp
<?php
// Shortcut-Netz für XOR-Problem erstellen (2 Eingaben, 1 Ausgang)
$ann = fann_create_shortcut(2, 2, 1);
if ($ann) {
// Bit-Fehler als Kriterium verwenden
fann_set_train_stop_function($ann, FANN_STOPFUNC_BIT);
fann_set_bit_fail_limit($ann, 0.35);
// Lernrate für Cascade-Training anpassen
fann_set_cascade_output_learning_rate($ann, 0.5);
fann_set_cascade_candidate_learning_rate($ann, 0.5);
// Training ohne Zwischenberichte (0), maximal 20 neue Neuronen
$success = fann_cascadetrain_on_file(
$ann,
'/pfad/zu/xor.data',
20,
0,
0.0
);
echo $success
? "XOR-Netz erfolgreich trainiert. Neuronen: " . fann_get_total_neurons($ann) . PHP_EOL
: "Training fehlgeschlagen." . PHP_EOL;
fann_destroy($ann);
}
?>
// Wichtig · Fallstricke
Dateiformat: Die Trainingsdatei muss dem FANN-Format entsprechen. Die erste Zeile enthält Anzahl der Trainingssätze, Eingaben und Ausgaben (z. B. 4 2 1), gefolgt von abwechselnden Eingabe- und Ausgabezeilen.
Nur für Shortcut-Netze: Der Cascade2-Algorithmus ist ausschließlich für Netze geeignet, die mit fann_create_shortcut() erstellt wurden. Bei Standard-Netzen (fann_create_standard()) liefert das Training keine sinnvollen Ergebnisse.
Erweiterungsverfügbarkeit: Die FANN-Erweiterung ist nicht standardmäßig in PHP enthalten. Sie muss separat installiert werden (PECL: pecl install fann). Ab PHP 8.0 sollte die Kompatibilität der Erweiterung geprüft werden.