Signatur
Beschreibung
fann_set_activation_function_layer() weist allen Neuronen einer angegebenen Schicht (Layer) eines FANN-Netzwerks (Fast Artificial Neural Network) dieselbe Aktivierungsfunktion zu. Damit lässt sich das Verhalten aller Neuronen einer Schicht auf einmal definieren, ohne jedes Neuron einzeln konfigurieren zu müssen.
Aktivierungsfunktionen bestimmen, wie ein Neuron seinen Eingangswert in einen Ausgangswert transformiert. Gängige Beispiele sind FANN_SIGMOID für eine S-förmige Kurve, FANN_RELU für eine gleichgerichtete lineare Einheit oder FANN_LINEAR für eine lineare Transformation. Die Wahl der richtigen Aktivierungsfunktion hat großen Einfluss auf die Lerngeschwindigkeit und die Qualität der Ergebnisse des Netzwerks.
Typischerweise werden für versteckte Schichten nichtlineare Aktivierungsfunktionen wie FANN_SIGMOID oder FANN_SIGMOID_SYMMETRIC verwendet, während die Ausgabeschicht je nach Aufgabe (Klassifikation, Regression) eine andere Funktion erhalten kann. Der Schicht-Index beginnt bei 1 (die erste versteckte Schicht), wobei die Eingabeschicht (Index 0) keine konfigurierbare Aktivierungsfunktion besitzt.
Diese Funktion setzt die PHP-Erweiterung FANN voraus, die separat installiert werden muss. Sie ist Teil der prozeduralen FANN-API, die als Alternative zu den objektorientierten FANN-Klassen verfügbar ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Ein gültiges FANN-Netzwerk-Resource-Handle, das zuvor mit fann_create_standard() oder einer ähnlichen Funktion erstellt wurde. |
|
| $activation_function Pflicht | int | Die zu setzende Aktivierungsfunktion als FANN-Konstante, z. B. FANN_SIGMOID, FANN_SIGMOID_SYMMETRIC, FANN_LINEAR, FANN_RELU oder FANN_ELLIOT. |
|
| $layer Pflicht | int | Der 0-basierte Index der Schicht, für die die Aktivierungsfunktion gesetzt werden soll. Die Eingabeschicht hat den Index 0, die erste versteckte Schicht den Index 1 usw. |
Rückgabewert
true zurück, wenn die Aktivierungsfunktion erfolgreich gesetzt wurde, oder false, wenn ein Fehler aufgetreten ist (z. B. ungültiger Schicht-Index oder ungültige Aktivierungsfunktion).Beispiele
Aktivierungsfunktion für versteckte und Ausgabeschicht setzen
<?php
// Erstellt ein neuronales Netz mit 2 Eingabeneuronen, 4 versteckten Neuronen und 1 Ausgabeneuron
$ann = fann_create_standard(3, 2, 4, 1);
if ($ann) {
// Versteckte Schicht (Index 1): Sigmoid-Aktivierungsfunktion setzen
fann_set_activation_function_layer($ann, FANN_SIGMOID_SYMMETRIC, 1);
// Ausgabeschicht (Index 2): Lineare Aktivierungsfunktion setzen
fann_set_activation_function_layer($ann, FANN_LINEAR, 2);
echo "Aktivierungsfunktionen erfolgreich gesetzt." . PHP_EOL;
fann_destroy($ann);
} else {
echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
Alle versteckten Schichten eines tiefen Netzes konfigurieren
<?php
// Erstellt ein tiefes Netz: 3 Eingaben, zwei versteckte Schichten (8 und 4 Neuronen), 2 Ausgaben
$ann = fann_create_standard(4, 3, 8, 4, 2);
if ($ann) {
$hiddenLayers = [1, 2]; // Indizes der versteckten Schichten
foreach ($hiddenLayers as $layer) {
$success = fann_set_activation_function_layer($ann, FANN_SIGMOID, $layer);
if ($success) {
echo "Schicht {$layer}: FANN_SIGMOID gesetzt." . PHP_EOL;
} else {
echo "Fehler beim Setzen der Aktivierungsfunktion für Schicht {$layer}." . PHP_EOL;
}
}
// Ausgabeschicht mit FANN_SIGMOID_SYMMETRIC konfigurieren
fann_set_activation_function_layer($ann, FANN_SIGMOID_SYMMETRIC, 3);
echo "Ausgabeschicht (3): FANN_SIGMOID_SYMMETRIC gesetzt." . PHP_EOL;
fann_destroy($ann);
}
// Wichtig · Fallstricke
Schicht-Indizierung: Die Eingabeschicht hat den Index 0 und kann keine Aktivierungsfunktion erhalten – das Setzen auf Schicht 0 hat keine Wirkung oder schlägt fehl. Versteckte Schichten beginnen bei Index 1.
Abgrenzung: Soll nur ein einzelnes Neuron konfiguriert werden, ist fann_set_activation_function_hidden() für alle versteckten Schichten oder fann_set_activation_function() für ein einzelnes Neuron die geeignetere Wahl.
Abhängigkeit: Diese Funktion erfordert die PECL-Erweiterung fann. Sie steht nicht in der PHP-Standardinstallation zur Verfügung und muss über PECL oder paketbasiert installiert werden.