FANN unterstützt nur tanh
und linear
Fehlerfunktionen. Dies bedeutet, wie Sie sagen, dass die vom neuronalen Netzwerk ausgegebenen Wahrscheinlichkeiten nicht zu 1 aufsummieren. Es gibt keine einfache Lösung zum Implementieren eines softmax
-Ausgangs, da dies eine Änderung der Kostenfunktion und somit der in der Backpropagation-Routine verwendeten Fehlerfunktion bedeutet . Da FANN Open Source ist, können Sie sich das selbst anschauen. Eine Frage zu Cross Validated scheint die Gleichungen zu geben, die Sie benötigen würden: implement.
Obwohl nicht die mathematisch elegante Lösung, nach der Sie suchen, würde ich versuchen, mit etwas gröberen Ansätzen zu spielen, bevor Sie die Implementierung einer Kostenfunktion in Angriff nehmen - als eine dieser könnte für Ihre Zwecke ausreichen. Zum Beispiel könnten Sie eine tanh
Fehlerfunktion verwenden und dann alle Ausgaben auf 1 neu renormalisieren. Oder, wenn Sie eigentlich nur daran interessiert sind, was die wahrscheinlichste Klassifizierung ist, können Sie einfach die Ausgabe mit der höchsten Punktzahl nehmen.
Steffen Nissen, der Typ hinter FANN, zeigt ein Beispiel here, in dem er anhand der Buchstabenhäufigkeit zu klassifizieren versucht, in welche Sprache ein Text geschrieben wird. Ich denke, er verwendet eine tanh
Fehlerfunktion (Standard) und nimmt nur die Klasse mit der höchsten Punktzahl, aber er zeigt an, dass es gut funktioniert.