Start · Sprachen · PHP · Referenz · fann_set_activation_function

fann_set_activation_function

Funktion

Setzt die Aktivierungsfunktion für ein bestimmtes Neuron in einer bestimmten Schicht eines neuronalen Netzes.

seit PHP 5.0.0 Kategorie: misc

Signatur

fann_set_activation_function(resource $ann, int $activation_function, int $layer, int $neuron): bool

Beschreibung

fann_set_activation_function() weist einem einzelnen Neuron in einer festgelegten Schicht eines künstlichen neuronalen Netzes (FANN) eine spezifische Aktivierungsfunktion zu. Die Aktivierungsfunktion bestimmt, wie das Neuron seine Eingaben in eine Ausgabe transformiert – sie ist damit ein zentrales Element für das Lernverhalten und die Leistungsfähigkeit des Netzes.

Die verfügbaren Aktivierungsfunktionen werden durch FANN-Konstanten angegeben, z. B. FANN_SIGMOID, FANN_SIGMOID_STEPWISE, FANN_LINEAR, FANN_THRESHOLD, FANN_ELLIOT und weitere. Die Wahl der richtigen Aktivierungsfunktion hängt stark vom Anwendungsfall ab: Klassifikationsaufgaben profitieren oft von Sigmoid-Funktionen, während lineare Funktionen für Regressionsprobleme geeigneter sein können.

Die Schichten werden als Ganzzahl angegeben, beginnend mit 0 für die Eingabeschicht. Die Neuronen einer Schicht werden ebenfalls ab 0 gezählt. Soll eine Aktivierungsfunktion für alle Neuronen einer Schicht oder des gesamten Netzes gesetzt werden, bieten sich die Funktionen fann_set_activation_function_layer() bzw. fann_set_activation_function_hidden() und fann_set_activation_function_output() an.

Die Funktion ist Teil der FANN-Erweiterung (Fast Artificial Neural Network Library) für PHP, die separat installiert werden muss.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Ressource, die durch fann_create_standard() oder eine ähnliche Funktion erstellt wurde.
$activation_function Pflicht int Die zu setzende Aktivierungsfunktion, angegeben als FANN-Konstante, z. B. FANN_SIGMOID, FANN_LINEAR oder FANN_ELLIOT.
$layer Pflicht int Der Index der Schicht (ab 0 für die Eingabeschicht), in der das Neuron liegt.
$neuron Pflicht int Der Index des Neurons innerhalb der angegebenen Schicht (ab 0).

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false wenn ein Fehler aufgetreten ist, z. B. bei ungültigem Schicht- oder Neuron-Index.

Beispiele

Aktivierungsfunktion für ein einzelnes Neuron setzen

<?php
// Neuronales Netz mit 2 Eingaben, 3 Hidden-Neuronen und 1 Ausgabe erstellen
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    // Sigmoid-Aktivierungsfunktion für Neuron 0 in Schicht 1 (Hidden Layer) setzen
    $result = fann_set_activation_function($ann, FANN_SIGMOID, 1, 0);

    if ($result) {
        echo "Aktivierungsfunktion erfolgreich gesetzt." . PHP_EOL;
    } else {
        echo "Fehler beim Setzen der Aktivierungsfunktion." . PHP_EOL;
    }

    fann_destroy($ann);
}
Aktivierungsfunktion erfolgreich gesetzt.

Verschiedene Aktivierungsfunktionen für einzelne Neuronen zuweisen

<?php
// Netz mit 2 Eingaben, 4 Hidden-Neuronen und 1 Ausgabe erstellen
$ann = fann_create_standard(3, 2, 4, 1);

if ($ann) {
    // Jedes Neuron im Hidden Layer (Schicht 1) erhält eine andere Aktivierungsfunktion
    fann_set_activation_function($ann, FANN_SIGMOID,   1, 0);
    fann_set_activation_function($ann, FANN_LINEAR,    1, 1);
    fann_set_activation_function($ann, FANN_ELLIOT,    1, 2);
    fann_set_activation_function($ann, FANN_THRESHOLD, 1, 3);

    // Ausgabeneuron (Schicht 2, Neuron 0) mit Sigmoid-Funktion versehen
    fann_set_activation_function($ann, FANN_SIGMOID, 2, 0);

    echo "Verschiedene Aktivierungsfunktionen erfolgreich zugewiesen." . PHP_EOL;

    fann_destroy($ann);
}
Verschiedene Aktivierungsfunktionen erfolgreich zugewiesen.

// Wichtig · Fallstricke

Erweiterung erforderlich: Die FANN-Erweiterung ist nicht standardmäßig in PHP enthalten und muss separat über PECL installiert werden (pecl install fann). Stelle sicher, dass extension=fann.so in der php.ini eingetragen ist.

Schicht- und Neuron-Indizes: Ungültige Indizes (z. B. ein Neuron-Index, der die Anzahl der Neuronen in der Schicht übersteigt) führen zu einem Rückgabewert false. Prüfe die Anzahl der Schichten mit fann_get_num_layers() und die Neuronen pro Schicht mit fann_get_layer_array(), um Index-Fehler zu vermeiden.

Alternativ für alle Neuronen: Sollen alle Neuronen einer Schicht oder des gesamten Netzes dieselbe Aktivierungsfunktion erhalten, sind fann_set_activation_function_layer(), fann_set_activation_function_hidden() oder fann_set_activation_function_output() effizienter als ein schleifenbasiertes Setzen mit dieser Funktion.