Start · Sprachen · PHP · Referenz · fann_read_train_from_file

fann_read_train_from_file

Funktion

Liest Trainingsdaten aus einer FANN-Trainingsdatei und gibt eine Trainings-Ressource zurück.

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_read_train_from_file(string $filename): resource|false

Beschreibung

fann_read_train_from_file() ist Teil der FANN-Erweiterung (Fast Artificial Neural Network) für PHP und liest Trainings­datensätze aus einer Datei im FANN-spezifischen Textformat ein. Die zurückgegebene Ressource kann anschließend direkt an Trainings­funktionen wie fann_train_on_data() oder fann_train_on_file() übergeben werden.

Das Dateiformat besteht aus einer Kopfzeile mit der Anzahl der Trainings­paare, der Anzahl der Eingabe­neuronen und der Anzahl der Ausgabe­neuronen, gefolgt von den Eingabe- und Ausgabe­vektoren für jedes Trainings­paar. 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 false zurü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

Typ
resource|false
Beschreibung
Gibt eine FANN-Trainings­ressource zurück, die die eingelesenen Trainings­daten repräsentiert, oder 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);
Training abgeschlossen. MSE: 0.00089...

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);
Trainingspaare: 4 Eingabe-Neuronen: 2 Ausgabe-Neuronen: 1

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