Signatur
Beschreibung
fann_set_activation_function_output() legt die Aktivierungsfunktion fest, die für alle Neuronen der Ausgabeschicht des angegebenen neuronalen Netzes verwendet werden soll. Die Aktivierungsfunktion bestimmt, wie die gewichtete Summe der Eingaben eines Neurons in einen Ausgabewert umgewandelt wird.
Diese Funktion ist besonders nützlich, wenn man die Ausgabeschicht separat von den versteckten Schichten konfigurieren möchte — beispielsweise wenn man in den versteckten Schichten eine sigmoidale Funktion verwendet, aber in der Ausgabeschicht eine lineare Funktion für Regressionsprobleme benötigt.
Die verfügbaren Aktivierungsfunktionen sind als FANN-Konstanten definiert, z. B. FANN_SIGMOID, FANN_SIGMOID_SYMMETRIC, FANN_LINEAR, FANN_RELU u. v. m. Die Wahl der richtigen Aktivierungsfunktion für die Ausgabeschicht hängt stark vom jeweiligen Problem ab: Bei Klassifikation ist FANN_SIGMOID oder FANN_SIGMOID_SYMMETRIC üblich, bei Regression hingegen FANN_LINEAR.
Die Funktion ist Teil der FANN-Erweiterung (Fast Artificial Neural Network Library) für PHP und erfordert, dass diese Erweiterung kompiliert und aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Ressource, die mit Funktionen wie fann_create_standard() oder fann_create_from_file() erzeugt wurde. |
|
| $activation_function Pflicht | int | Die zu setzende Aktivierungsfunktion als FANN-Konstante, z. B. FANN_SIGMOID, FANN_SIGMOID_SYMMETRIC, FANN_LINEAR oder FANN_RELU. |
Rückgabewert
true zurück, wenn die Aktivierungsfunktion erfolgreich gesetzt wurde, andernfalls false (z. B. wenn $ann keine gültige FANN-Ressource ist oder eine unbekannte Aktivierungsfunktion angegeben wurde).Beispiele
Ausgabeschicht mit Sigmoid-Funktion konfigurieren
<?php
// Neuronales Netz mit 2 Eingaben, 1 versteckter Schicht (3 Neuronen) und 1 Ausgabe erstellen
$ann = fann_create_standard(3, 2, 3, 1);
if ($ann) {
// Versteckte Schichten mit symmetrischer Sigmoid-Funktion konfigurieren
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
// Ausgabeschicht mit Standard-Sigmoid konfigurieren (Ausgabewerte zwischen 0 und 1)
$result = fann_set_activation_function_output($ann, FANN_SIGMOID);
if ($result) {
echo "Aktivierungsfunktion der Ausgabeschicht erfolgreich gesetzt.\n";
} else {
echo "Fehler beim Setzen der Aktivierungsfunktion.\n";
}
fann_destroy($ann);
}
Regressionsnetz mit linearer Ausgabefunktion
<?php
// Netz für ein Regressionsproblem: 3 Eingaben, 5 versteckte Neuronen, 1 Ausgabe
$ann = fann_create_standard(3, 3, 5, 1);
if ($ann) {
// Versteckte Schichten: ReLU-ähnliche Aktivierung
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
// Ausgabeschicht: Lineare Funktion für unbegrenzte Ausgabewerte (Regression)
if (fann_set_activation_function_output($ann, FANN_LINEAR)) {
echo "Linearer Ausgabe-Layer gesetzt — geeignet für Regressionsprobleme.\n";
}
// Netz auf Trainingsdaten trainieren (hier vereinfacht dargestellt)
// fann_train_on_file($ann, 'training_data.data', 1000, 10, 0.0001);
fann_destroy($ann);
}
// Wichtig · Fallstricke
Achtung: Die FANN-Erweiterung für PHP ist nicht standardmäßig aktiviert und muss separat installiert werden. Sie wird ab PHP 7.x kaum noch gepflegt; für moderne Projekte sollten Alternativen wie TensorFlow-Bindings oder andere ML-Bibliotheken in Betracht gezogen werden.
Die Wahl der Aktivierungsfunktion der Ausgabeschicht muss zum verwendeten Fehlerfunktionstyp passen: Bei FANN_ERRORFUNC_TANH sollte die Ausgabefunktion FANN_SIGMOID_SYMMETRIC liefern (Werte zwischen -1 und 1), bei binärer Klassifikation ist FANN_SIGMOID (0 bis 1) sinnvoll. Eine falsch gewählte Ausgabe-Aktivierungsfunktion kann das Training erheblich verschlechtern oder sogar unmöglich machen.