Start · Sprachen · PHP · Referenz · fann_set_sarprop_temperature

fann_set_sarprop_temperature

Funktion

Setzt die SARPROP-Temperatur für ein neuronales Netz, das mit dem SARPROP-Trainingsalgorithmus trainiert wird.

seit PHP 7.0.0 Kategorie: misc

Signatur

fann_set_sarprop_temperature(resource $ann, float $sarprop_temperature): bool

Beschreibung

fann_set_sarprop_temperature legt die Temperatur für den SARPROP-Lernalgorithmus (Self-Adaptive RProp) fest. Dieser Temperaturwert beeinflusst das Lernverhalten des Netzwerks und steuert, wie stark Gewichtsänderungen bei der Optimierung berücksichtigt werden.

SARPROP ist eine Erweiterung des klassischen RProp-Algorithmus, der adaptiv die Lernraten für jede Verbindung im Netz anpasst. Der Temperaturparameter spielt dabei eine ähnliche Rolle wie in thermodynamischen Simulationsverfahren: Ein höherer Wert erlaubt größere Sprünge im Lösungsraum, während ein niedrigerer Wert zu einer feineren, stabileren Konvergenz führt.

Die Funktion gehört zur FANN-Erweiterung (Fast Artificial Neural Network Library) für PHP. Um sie nutzen zu können, muss die fann-Erweiterung in PHP installiert und aktiviert sein. Der aktuelle Wert der Temperatur lässt sich mit fann_get_sarprop_temperature auslesen.

Diese Einstellung ist nur wirksam, wenn als Trainingsalgorithmus FANN_TRAIN_SARPROP verwendet wird. Bei anderen Trainingsalgorithmen hat dieser Parameter keine Auswirkung.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Netzwerk-Ressource, die zuvor mit fann_create_standard oder einer ähnlichen Funktion erstellt wurde.
$sarprop_temperature Pflicht float Die neue SARPROP-Temperatur. Der Standardwert laut FANN-Bibliothek beträgt 0.015. Ein höherer Wert erhöht die Toleranz gegenüber größeren Gewichtsänderungen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Temperatur erfolgreich gesetzt wurde. Gibt false zurück, wenn ein Fehler aufgetreten ist, z. B. wenn ann keine gültige FANN-Ressource ist.

Beispiele

SARPROP-Temperatur setzen und trainieren

<?php
// Neuronales Netz erstellen: 2 Eingaben, 1 versteckte Schicht mit 3 Neuronen, 1 Ausgabe
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    // Trainingsalgorithmus auf SARPROP setzen
    fann_set_training_algorithm($ann, FANN_TRAIN_SARPROP);

    // SARPROP-Temperatur setzen
    $result = fann_set_sarprop_temperature($ann, 0.02);

    if ($result) {
        echo "SARPROP-Temperatur erfolgreich gesetzt." . PHP_EOL;
        echo "Aktuelle Temperatur: " . fann_get_sarprop_temperature($ann) . PHP_EOL;
    } else {
        echo "Fehler beim Setzen der SARPROP-Temperatur." . PHP_EOL;
    }

    fann_destroy($ann);
} else {
    echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
?>
SARPROP-Temperatur erfolgreich gesetzt. Aktuelle Temperatur: 0.02

SARPROP-Parameter konfigurieren und auf Datei anwenden

<?php
$ann = fann_create_from_file('mein_netz.net');

if ($ann) {
    // Trainingsalgorithmus auf SARPROP setzen
    fann_set_training_algorithm($ann, FANN_TRAIN_SARPROP);  

    // Temperatur auf niedrigen Wert für feinere Konvergenz setzen
    fann_set_sarprop_temperature($ann, 0.005);

    // Weitere SARPROP-Parameter konfigurieren
    fann_set_sarprop_weight_decay_shift($ann, -6.644);
    fann_set_sarprop_step_error_threshold_factor($ann, 0.1);
    fann_set_sarprop_step_error_shift($ann, 1.385);

    echo "Konfigurierte Temperatur: " . fann_get_sarprop_temperature($ann) . PHP_EOL;

    // Training durchführen
    fann_train_on_file($ann, 'trainingsdaten.data', 1000, 100, 0.001);

    // Netz speichern
    fann_save($ann, 'trainiertes_netz.net');
    fann_destroy($ann);
} else {
    echo "Fehler beim Laden des Netzes." . PHP_EOL;
}
?>
Konfigurierte Temperatur: 0.005

// Wichtig · Fallstricke

Hinweis zur Erweiterung: Die FANN-Erweiterung ist nicht standardmäßig in PHP enthalten. Sie muss separat über PECL installiert werden (pecl install fann) und in der php.ini mit extension=fann.so (Linux/macOS) bzw. extension=fann.dll (Windows) aktiviert werden.

Algorithmuspezifisch: Der Temperaturparameter hat nur Auswirkungen, wenn der Trainingsalgorithmus auf FANN_TRAIN_SARPROP gesetzt ist. Bei anderen Algorithmen wie FANN_TRAIN_RPROP oder FANN_TRAIN_BACKPROP wird dieser Wert ignoriert.

Experimentieren empfohlen: Der optimale Temperaturwert ist stark problemabhängig. Es wird empfohlen, verschiedene Werte auszuprobieren und die Konvergenzkurve des Trainings zu beobachten, um den besten Wert für die jeweilige Aufgabe zu ermitteln.