Start · Sprachen · PHP · Referenz · fann_reset_MSE

fann_reset_MSE

Funktion

Setzt den mittleren quadratischen Fehler (MSE) sowie die Bit-Fehlerzähler eines FANN-Netzwerks auf null zurück.

Kategorie: misc

Signatur

fann_reset_MSE(resource $ann): bool

Beschreibung

fann_reset_MSE setzt den intern gespeicherten mittleren quadratischen Fehler (Mean Squared Error, MSE) eines neuronalen Netzes, das mit der FANN-Bibliothek (Fast Artificial Neural Network) erstellt wurde, auf den Ausgangswert zurück. Gleichzeitig werden die Zähler für Bit-Fehler (bit_fail) zurückgesetzt.

Diese Funktion ist nützlich, wenn man den MSE-Verlauf zwischen verschiedenen Trainingsphasen oder Testläufen klar trennen möchte. Ohne ein explizites Zurücksetzen akkumuliert FANN die Fehlerwerte über alle bisherigen Vorwärtsdurchläufe (fann_run, fann_test), was den ausgelesenen MSE verzerren würde.

Typischerweise wird fann_reset_MSE direkt vor einer manuellen Testschleife aufgerufen, in der jeder Eingabevektor einzeln über fann_test geprüft und anschließend der akkumulierte MSE mit fann_get_MSE abgelesen wird.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine FANN-Netzwerk-Ressource, wie sie von fann_create_standard, fann_create_from_file o. Ä. zurückgegeben wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück. Bei einem ungültigen Netzwerk-Handle oder einem internen Fehler wird false zurückgegeben.

Beispiele

MSE nach manuellem Testlauf auslesen

<?php
// Netzwerk laden und Testdaten vorbereiten
$ann = fann_create_from_file('mein_netz.net');

$testDaten = [
    [[0.0, 0.0], [0.0]],
    [[0.0, 1.0], [1.0]],
    [[1.0, 0.0], [1.0]],
    [[1.0, 1.0], [0.0]],
];

// MSE vor dem Testlauf zurücksetzen
fann_reset_MSE($ann);

foreach ($testDaten as [$eingabe, $erwartet]) {
    fann_test($ann, $eingabe, $erwartet);
}

$mse = fann_get_MSE($ann);
echo 'MSE nach Testlauf: ' . $mse . PHP_EOL;

fann_destroy($ann);
MSE nach Testlauf: 0.0625

MSE zwischen zwei Trainings-Epochen trennen

<?php
$ann      = fann_create_from_file('xor_netz.net');
$trainingsDaten = fann_read_train_from_file('xor.data');

for ($epoche = 1; $epoche <= 3; $epoche++) {
    fann_reset_MSE($ann);
    fann_train_epoch($ann, $trainingsDaten);
    $mse = fann_get_MSE($ann);
    echo "Epoche {$epoche}: MSE = {$mse}" . PHP_EOL;
}

fann_destroy_train($trainingsDaten);
fann_destroy($ann);
Epoche 1: MSE = 0.2503 Epoche 2: MSE = 0.1874 Epoche 3: MSE = 0.1102

// Wichtig · Fallstricke

Achtung: Die FANN-Extension für PHP (fann) muss separat installiert sein und ist nicht Bestandteil des PHP-Kerns. Auf PECL unter dem Namen fann verfügbar. Ohne diese Extension führt der Aufruf zu einem schwerwiegenden Fehler.

Beim Einsatz von fann_train_on_data oder fann_cascadetrain_on_data wird der MSE intern ohnehin vor jedem Callback zurückgesetzt; fann_reset_MSE ist daher vor allem bei manuellen Schleifen mit fann_train_epoch oder fann_test relevant.