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