Signatur
Beschreibung
fann_get_bit_fail liefert die Anzahl der Ausgabe-Bits, die beim zuletzt durchgeführten Trainingsschritt den definierten Bit-Fehler-Grenzwert (bit fail limit) überschritten haben. Ein Bit gilt als fehlgeschlagen, wenn der Unterschied zwischen dem tatsächlichen Ausgabewert und dem Zielwert größer als der konfigurierte Grenzwert ist.
Diese Funktion ist besonders nützlich, um den Trainingsfortschritt eines neuronalen Netzes zu überwachen. Wenn der Rückgabewert 0 ist, hat das Netz alle Trainingsdaten korrekt klassifiziert (innerhalb des konfigurierten Toleranzbereichs).
Der Bit-Fehler-Grenzwert kann mit fann_set_bit_fail_limit angepasst werden. Typischerweise wird diese Funktion innerhalb eines eigenen Callback-Trainings eingesetzt, um benutzerdefinierte Abbruchbedingungen zu implementieren.
Diese Funktion setzt die FANN-Erweiterung (Fast Artificial Neural Network) voraus, die separat installiert und aktiviert werden muss.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Ressource, die zuvor mit fann_create_standard, fann_create_sparse oder einer ähnlichen Funktion erstellt wurde. |
Rückgabewert
0 bedeutet, dass kein Bit den Fehlergrenzwert überschritten hat.Beispiele
Trainingsfortschritt mit fann_get_bit_fail überwachen
<?php
// Neuronales Netz erstellen (2 Eingaben, 1 versteckte Schicht mit 3 Neuronen, 1 Ausgabe)
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Aktivierungsfunktion und Trainingsalgorithmus konfigurieren
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);
// Bit-Fail-Limit setzen (Standard: 0.35)
fann_set_bit_fail_limit($ann, 0.35);
// Trainingsdaten laden (XOR-Problem)
$train_data = fann_read_train_from_file('xor.data');
if ($train_data) {
// Einen einzelnen Trainingsschritt durchführen
fann_train_epoch($ann, $train_data);
// Anzahl fehlgeschlagener Bits abfragen
$bit_fail = fann_get_bit_fail($ann);
echo "Fehlgeschlagene Bits nach einem Trainingsschritt: " . $bit_fail . PHP_EOL;
fann_destroy_train($train_data);
}
fann_destroy($ann);
}
Eigene Trainingsschleife mit Bit-Fail-Abbruchbedingung
<?php
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_bit_fail_limit($ann, 0.35);
$train_data = fann_read_train_from_file('xor.data');
if ($train_data) {
$max_epochs = 1000;
$epoch = 0;
do {
fann_train_epoch($ann, $train_data);
$bit_fail = fann_get_bit_fail($ann);
$epoch++;
if ($epoch % 100 === 0) {
echo "Epoche {$epoch}: Fehlgeschlagene Bits = {$bit_fail}" . PHP_EOL;
}
} while ($bit_fail > 0 && $epoch < $max_epochs);
if ($bit_fail === 0) {
echo "Training erfolgreich abgeschlossen nach {$epoch} Epochen." . PHP_EOL;
fann_save($ann, 'xor_trained.net');
} else {
echo "Maximale Epochenanzahl erreicht. Verbleibende fehlgeschlagene Bits: {$bit_fail}" . PHP_EOL;
}
fann_destroy_train($train_data);
}
fann_destroy($ann);
}
// Wichtig · Fallstricke
Erweiterungsabhängigkeit: Diese Funktion ist nur verfügbar, wenn die FANN-PHP-Erweiterung installiert und in der php.ini aktiviert ist (extension=fann.so bzw. extension=fann.dll). Sie ist nicht Bestandteil der PHP-Standardinstallation.
Reihenfolge beachten: fann_get_bit_fail gibt nur sinnvolle Werte zurück, wenn zuvor mindestens ein Trainingsschritt (z. B. via fann_train_epoch oder fann_train) durchgeführt wurde. Vor dem ersten Training ist der Rückgabewert undefiniert.
Bit-Fail-Limit: Der Wert hängt direkt vom konfigurierten Bit-Fail-Limit ab. Ein zu strenger oder zu lockerer Grenzwert kann das Training ungewollt beeinflussen. Der Standardwert beträgt 0.35.