Signatur
Beschreibung
fann_set_activation_function_hidden weist allen Neuronen in sämtlichen verdeckten Schichten (Hidden Layers) des angegebenen neuronalen Netzes eine einheitliche Aktivierungsfunktion zu. Dies ist besonders praktisch, wenn man ein Netz initialisiert und für alle verdeckten Schichten dieselbe Aktivierungsfunktion verwenden möchte, ohne jede Schicht einzeln konfigurieren zu müssen.
Die Aktivierungsfunktion bestimmt, wie ein Neuron seinen Eingabewert in einen Ausgabewert umwandelt. Typische Beispiele sind die sigmoidale Funktion (FANN_SIGMOID), die hyperbolische Tangensfunktion (FANN_SIGMOID_SYMMETRIC / tanh) oder lineare Funktionen (FANN_LINEAR). Die Wahl der richtigen Aktivierungsfunktion hat großen Einfluss auf die Lerngeschwindigkeit und Qualität des Netzes.
Diese Funktion ist Teil der FANN-Erweiterung (Fast Artificial Neural Network Library) für PHP. Um sie nutzen zu können, muss die fann-Erweiterung in PHP kompiliert und aktiviert sein. Die Funktion betrifft ausschließlich die verdeckten Schichten – die Ausgabeschicht wird davon nicht beeinflusst und muss separat mit fann_set_activation_function_output konfiguriert werden.
FANN_SIGMOID– Sigmoidfunktion (Ausgabe: 0 bis 1)FANN_SIGMOID_SYMMETRIC– Symmetrische Sigmoidfunktion / tanh (Ausgabe: -1 bis 1)FANN_LINEAR– Lineare AktivierungsfunktionFANN_THRESHOLD– SchwellenwertfunktionFANN_RELU– Rectified Linear Unit (sofern unterstützt)
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ann Pflicht | resource | Eine gültige FANN-Ressource, die zuvor mit fann_create_standard, fann_create_sparse oder einer ähnlichen FANN-Erzeugungsfunktion erstellt wurde. |
|
| $activation_function Pflicht | int | Die gewünschte Aktivierungsfunktion als FANN-Konstante, z. B. FANN_SIGMOID, FANN_SIGMOID_SYMMETRIC, FANN_LINEAR oder FANN_THRESHOLD. |
Rückgabewert
true zurück, wenn die Aktivierungsfunktion erfolgreich gesetzt wurde. Bei einem ungültigen Handle oder einem nicht unterstützten Funktionskonstantenwert wird false zurückgegeben.Beispiele
Neuronales Netz mit SIGMOID für verdeckte Schichten erstellen
<?php
// Erstellt ein Netz mit 3 Eingabe-, 5 verdeckten und 1 Ausgabeneuron
$ann = fann_create_standard(3, 3, 5, 1);
if ($ann) {
// Sigmoidfunktion für alle verdeckten Schichten setzen
if (fann_set_activation_function_hidden($ann, FANN_SIGMOID)) {
echo "Aktivierungsfunktion für verdeckte Schichten erfolgreich gesetzt." . PHP_EOL;
} else {
echo "Fehler beim Setzen der Aktivierungsfunktion." . PHP_EOL;
}
// Ausgabeschicht separat konfigurieren
fann_set_activation_function_output($ann, FANN_SIGMOID);
fann_destroy($ann);
} else {
echo "Fehler beim Erstellen des neuronalen Netzes." . PHP_EOL;
}
Training mit symmetrischer Sigmoid-Funktion (tanh) in verdeckten Schichten
<?php
// Netz mit 2 Eingabe-, 4 verdeckten und 1 Ausgabeneuron
$ann = fann_create_standard(3, 2, 4, 1);
if ($ann) {
// Symmetrische Sigmoidfunktion (tanh, Ausgabe -1 bis 1) für verdeckte Schichten
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
// Lineare Funktion für die Ausgabeschicht
fann_set_activation_function_output($ann, FANN_LINEAR);
// Lernrate setzen
fann_set_learning_rate($ann, 0.7);
// Trainingsdaten laden und Netz trainieren
$train_data = fann_read_train_from_file('xor.data');
if ($train_data) {
fann_train_on_data($ann, $train_data, 1000, 10, 0.001);
fann_save($ann, 'xor_trained.net');
fann_destroy_train($train_data);
echo "Training abgeschlossen und Netz gespeichert." . PHP_EOL;
}
fann_destroy($ann);
}
// Wichtig · Fallstricke
Erweiterung erforderlich: Die FANN-Erweiterung ist nicht standardmäßig in PHP enthalten. Sie muss separat über PECL installiert oder beim Kompilieren von PHP mit --with-fann eingebunden werden.
Schichtweise Konfiguration: Wenn unterschiedliche Aktivierungsfunktionen für einzelne Schichten oder Neuronen benötigt werden, können fann_set_activation_function_layer (für eine einzelne Schicht) oder fann_set_activation_function (für ein einzelnes Neuron) verwendet werden. fann_set_activation_function_hidden setzt die Funktion pauschal für alle verdeckten Schichten gleichzeitig.
Ausgabeschicht nicht betroffen: Diese Funktion hat keinen Einfluss auf die Neuronen der Ausgabeschicht. Für die Ausgabeschicht muss fann_set_activation_function_output separat aufgerufen werden.