Signatur
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
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);
}
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);
}
// 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.