Start · Sprachen · PHP · Referenz · fann_duplicate_train_data

fann_duplicate_train_data

Funktion

Gibt eine exakte Kopie eines FANN-Trainingsdaten-Ressource-Objekts zurück.

Kategorie: misc

Signatur

fann_duplicate_train_data(resource $data): resource|false

Beschreibung

fann_duplicate_train_data() erstellt eine vollständige, unabhängige Kopie einer bestehenden FANN-Trainingsdaten-Ressource. Die zurückgegebene Ressource ist ein eigenständiges Objekt, das keine Referenz auf das Original hält – Änderungen an der Kopie wirken sich nicht auf das Original aus und umgekehrt.

Diese Funktion ist nützlich, wenn man Trainingsdaten mehrfach mit unterschiedlichen Parametern oder Netzwerken verwenden möchte, ohne das Original zu verändern. Typische Anwendungsfälle sind Experimente mit verschiedenen Trainingsalgorithmen, bei denen man jeweils denselben Ausgangsdatensatz braucht, oder das Erstellen von Teilmengen durch anschließendes Manipulieren der Kopie.

Die Funktion gehört zur FANN-Erweiterung (Fast Artificial Neural Network) für PHP und setzt voraus, dass diese Erweiterung installiert und aktiviert ist. Die zurückgegebene Ressource muss nach der Verwendung mit fann_destroy_train() freigegeben werden, um Speicherlecks zu vermeiden.

Parameter

Name Typ Default Beschreibung
$data Pflicht resource Eine gültige FANN-Trainingsdaten-Ressource, wie sie z. B. von fann_read_train_from_file() oder fann_create_train_from_callback() zurückgegeben wird.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt eine neue, unabhängige FANN-Trainingsdaten-Ressource zurück, die eine exakte Kopie der übergebenen Ressource darstellt. Im Fehlerfall wird false zurückgegeben.

Beispiele

Trainingsdaten duplizieren und unabhängig verwenden

<?php
// Trainingsdaten aus einer Datei laden
$train_data = fann_read_train_from_file('xor.data');

if ($train_data === false) {
    die('Trainingsdaten konnten nicht geladen werden.');
}

// Exakte Kopie erstellen
$train_data_copy = fann_duplicate_train_data($train_data);

if ($train_data_copy === false) {
    die('Duplizierung der Trainingsdaten fehlgeschlagen.');
}

// Ausgabe der Anzahl der Trainingsbeispiele in beiden Ressourcen
echo 'Original: '  . fann_length_train_data($train_data)      . ' Beispiele' . PHP_EOL;
echo 'Kopie:    '  . fann_length_train_data($train_data_copy) . ' Beispiele' . PHP_EOL;

// Ressourcen freigeben
fann_destroy_train($train_data);
fann_destroy_train($train_data_copy);
Original: 4 Beispiele Kopie: 4 Beispiele

Kopie für paralleles Training zweier Netze

<?php
$train_data = fann_read_train_from_file('sensor.data');

// Zwei unabhängige Kopien für zwei verschiedene Netze
$data_net1 = fann_duplicate_train_data($train_data);
$data_net2 = fann_duplicate_train_data($train_data);

$ann1 = fann_create_standard(3, 3, 4, 1);
$ann2 = fann_create_standard(3, 3, 6, 1);

// Netz 1 mit Kopie 1 trainieren
fann_train_on_data($ann1, $data_net1, 500, 10, 0.001);

// Netz 2 mit Kopie 2 trainieren (Original bleibt unberührt)
fann_train_on_data($ann2, $data_net2, 500, 10, 0.001);

echo 'Beide Netze erfolgreich trainiert.' . PHP_EOL;

// Ressourcen freigeben
fann_destroy_train($train_data);
fann_destroy_train($data_net1);
fann_destroy_train($data_net2);
fann_destroy($ann1);
fann_destroy($ann2);
Beide Netze erfolgreich trainiert.

// Wichtig · Fallstricke

Speicherverwaltung: Jede mit fann_duplicate_train_data() erzeugte Ressource belegt eigenständig Arbeitsspeicher. Es ist zwingend erforderlich, jede Kopie nach der Verwendung mit fann_destroy_train() explizit freizugeben, da PHP diese Ressourcen nicht automatisch bereinigt.

Die FANN-Erweiterung ist nicht Bestandteil der PHP-Standardinstallation. Sie muss separat installiert werden (z. B. über PECL: pecl install fann). Ohne diese Erweiterung steht die Funktion nicht zur Verfügung.