Start · Sprachen · PHP · Referenz · fann_get_activation_function

fann_get_activation_function

Funktion

Gibt die Aktivierungsfunktion eines bestimmten Neurons in einer bestimmten Schicht des neuronalen Netzes zurück.

seit PHP 5.6.0 Kategorie: misc

Signatur

fann_get_activation_function(resource $ann, int $layer, int $neuron): int|false

Beschreibung

fann_get_activation_function gehört zur FANN-Erweiterung (Fast Artificial Neural Network) und ermöglicht es, die aktuell für ein einzelnes Neuron gesetzte Aktivierungsfunktion abzufragen. Die Aktivierungsfunktion bestimmt, wie das Neuron seine Eingaben in einen Ausgabewert umwandelt – sie ist damit ein zentrales Element beim Training und Betrieb neuronaler Netze.

Der Rückgabewert ist eine der vordefinierten FANN-Konstanten, zum Beispiel FANN_SIGMOID, FANN_RELU oder FANN_LINEAR. Diese können verwendet werden, um die aktuelle Konfiguration eines Netzes zu inspizieren, zu vergleichen oder gezielt zu verändern (z. B. mittels fann_set_activation_function).

Die Schichten-Nummerierung beginnt bei 0 für die Eingabeschicht. Da Neuronen in der Eingabeschicht keine Aktivierungsfunktion besitzen, ist das Abfragen für diese Schicht nicht sinnvoll. Versteckte Schichten und die Ausgabeschicht (letzte Schicht) können regulär abgefragt werden.

Die Funktion ist besonders nützlich, wenn man Netz-Konfigurationen aus einer gespeicherten Datei laden und überprüfen möchte, oder wenn unterschiedliche Schichten unterschiedliche Aktivierungsfunktionen verwenden sollen und man sicherstellen will, dass alles korrekt eingerichtet ist.

Parameter

Name Typ Default Beschreibung
$ann Pflicht resource Eine gültige FANN-Netzwerk-Ressource, die z. B. mit fann_create_standard oder fann_create_from_file erzeugt wurde.
$layer Pflicht int Der Index der Schicht (0-basiert). 0 ist die Eingabeschicht, 1 die erste versteckte Schicht usw.
$neuron Pflicht int Der Index des Neurons innerhalb der gewählten Schicht (0-basiert).

Rückgabewert

Typ
int|false
Beschreibung
Gibt eine FANN-Konstante zurück, die die Aktivierungsfunktion des Neurons repräsentiert (z. B. FANN_SIGMOID, FANN_LINEAR). Gibt false zurück, wenn ein Fehler aufgetreten ist, z. B. wenn ein ungültiger Schicht- oder Neuronenindex übergeben wurde.

Beispiele

Aktivierungsfunktion eines Neurons abfragen

<?php
// Neuronales Netz mit 2 Eingaben, 3 versteckten und 1 Ausgabeneuron erstellen
$ann = fann_create_standard(3, 2, 3, 1);

if ($ann) {
    // Aktivierungsfunktion für das erste Neuron in der ersten versteckten Schicht (Layer 1)
    $activationFunc = fann_get_activation_function($ann, 1, 0);

    if ($activationFunc !== false) {
        echo "Aktivierungsfunktion (Layer 1, Neuron 0): " . $activationFunc . PHP_EOL;
        // Standard ist FANN_SIGMOID_STEPWISE = 6
        if ($activationFunc === FANN_SIGMOID_STEPWISE) {
            echo "Es wird FANN_SIGMOID_STEPWISE verwendet." . PHP_EOL;
        }
    } else {
        echo "Fehler beim Abrufen der Aktivierungsfunktion." . PHP_EOL;
    }

    fann_destroy($ann);
}
Aktivierungsfunktion (Layer 1, Neuron 0): 6 Es wird FANN_SIGMOID_STEPWISE verwendet.

Aktivierungsfunktionen aller Schichten ausgeben

<?php
$ann = fann_create_standard(3, 2, 4, 1);

if ($ann) {
    // Aktivierungsfunktion setzen und anschließend überprüfen
    fann_set_activation_function_layer($ann, FANN_RELU, 1); // versteckte Schicht
    fann_set_activation_function_layer($ann, FANN_LINEAR, 2); // Ausgabeschicht

    $numLayers = fann_get_num_layers($ann);
    $layerArray = fann_get_layer_array($ann);

    for ($layer = 1; $layer < $numLayers; $layer++) {
        $numNeurons = $layerArray[$layer];
        echo "Schicht $layer:" . PHP_EOL;
        for ($neuron = 0; $neuron < $numNeurons; $neuron++) {
            $func = fann_get_activation_function($ann, $layer, $neuron);
            echo "  Neuron $neuron: Aktivierungsfunktion = $func" . PHP_EOL;
        }
    }

    fann_destroy($ann);
}
Schicht 1: Neuron 0: Aktivierungsfunktion = 17 Neuron 1: Aktivierungsfunktion = 17 Neuron 2: Aktivierungsfunktion = 17 Neuron 3: Aktivierungsfunktion = 17 Schicht 2: Neuron 0: Aktivierungsfunktion = 0

// Wichtig · Fallstricke

Schicht 0 (Eingabeschicht): Das Abfragen der Aktivierungsfunktion für Neuronen in der Eingabeschicht (Layer 0) ergibt keinen sinnvollen Wert, da Eingabeneuronen keine Aktivierungsfunktion anwenden. Nutze daher immer Schicht-Indizes ≥ 1.

FANN-Erweiterung erforderlich: Die Funktion steht nur zur Verfügung, wenn PHP mit der FANN-Erweiterung kompiliert oder diese als Shared Extension geladen wurde. Überprüfe dies mit extension_loaded('fann').

Bias-Neuronen: Jede Schicht enthält intern ein zusätzliches Bias-Neuron. Dieses kann über den Index $numNeurons (letzter Index der Schicht) abgefragt werden, liefert aber in der Regel ebenfalls keinen sinnvollen Wert.