Signatur
Beschreibung
fann_read_train_from_file() ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) für PHP und liest Trainingsdatensätze aus einer Datei im FANN-spezifischen Textformat ein. Die zurückgegebene Ressource kann anschließend direkt an Trainingsfunktionen wie fann_train_on_data() oder fann_train_on_file() übergeben werden.
Das Dateiformat besteht aus einer Kopfzeile mit der Anzahl der Trainingspaare, der Anzahl der Eingabeneuronen und der Anzahl der Ausgabeneuronen, gefolgt von den Eingabe- und Ausgabevektoren für jedes Trainingspaar. Diese Struktur erlaubt es, umfangreiche Datensätze bequem als Textdateien zu verwalten und zu versionieren.
Die Funktion eignet sich besonders dann, wenn Trainingsdaten vorab aufbereitet, gespeichert und später für mehrere Trainingsläufe wiederverwendet werden sollen. Nach Abschluss des Trainings sollte die Ressource mit fann_destroy_train() freigegeben werden, um Speicherlecks zu vermeiden.
- Gibt
falsezurück, wenn die Datei nicht existiert oder nicht gelesen werden kann. - Erfordert die installierte FANN-PHP-Extension (
php-fann).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur FANN-Trainingsdatei im FANN-Textformat. Der Pfad kann relativ oder absolut angegeben werden. |
Rückgabewert
false, wenn die Datei nicht geöffnet oder verarbeitet werden konnte.Beispiele
Trainingsdaten einlesen und neuronales Netz trainieren
<?php
// Neuronales Netz erstellen: 2 Eingaben, 1 versteckte Schicht mit 3 Neuronen, 1 Ausgang
$ann = fann_create_standard(3, 2, 3, 1);
if (!$ann) {
die('Fehler beim Erstellen des neuronalen Netzes.');
}
// Trainingsdaten aus Datei einlesen (z. B. XOR-Trainingsset)
$train = fann_read_train_from_file(__DIR__ . '/xor.data');
if ($train === false) {
fann_destroy($ann);
die('Trainingsdatei konnte nicht gelesen werden.');
}
// Netz auf den Trainingsdaten trainieren
// Maximale Iterationen: 1000, Berichte alle 100 Iterationen, Ziel-Fehler: 0.001
fann_train_on_data($ann, $train, 1000, 100, 0.001);
echo 'Training abgeschlossen. MSE: ' . fann_get_MSE($ann) . PHP_EOL;
// Ressourcen freigeben
fann_destroy_train($train);
fann_destroy($ann);
Inhalt einer FANN-Trainingsdatei (xor.data) und Fehlerbehandlung
<?php
/*
Beispielinhalt von xor.data:
4 2 1
0 0
0
0 1
1
1 0
1
1 1
0
*/
$datei = __DIR__ . '/xor.data';
if (!file_exists($datei)) {
die('Trainingsdatei nicht gefunden: ' . $datei);
}
$train = fann_read_train_from_file($datei);
if ($train === false) {
die('Fehler beim Lesen der Trainingsdaten.');
}
$anzahl = fann_length_train_data($train);
$eingaben = fann_num_input_train_data($train);
$ausgaben = fann_num_output_train_data($train);
echo "Trainingspaare: $anzahl" . PHP_EOL;
echo "Eingabe-Neuronen: $eingaben" . PHP_EOL;
echo "Ausgabe-Neuronen: $ausgaben" . PHP_EOL;
fann_destroy_train($train);
// Wichtig · Fallstricke
Dateiformat: Die erste Zeile der FANN-Trainingsdatei muss exakt das Format num_data num_input num_output aufweisen (drei durch Leerzeichen getrennte Ganzzahlen). Abweichungen führen zu false als Rückgabewert oder zu einem Fehler zur Laufzeit.
Ressourcen freigeben: Die von dieser Funktion zurückgegebene Ressource belegt nativen Speicher. Sie muss nach Verwendung stets mit fann_destroy_train() freigegeben werden, da der PHP-Garbage-Collector nativen Speicher nicht automatisch verwaltet.
Extension erforderlich: Die Funktion steht nur zur Verfügung, wenn die PHP-Extension fann installiert und aktiviert ist. Auf vielen Systemen muss diese manuell über PECL oder den Paketmanager nachinstalliert werden (pecl install fann).