Wie die Umsetzung der Softmax-Derivat unabhängig von etwaigen Verlust-Funktion?

Für neuronale Netze Bibliothek, die ich implementiert einige Funktionen Aktivierung-und-Verlust-Funktionen und deren Ableitungen. Sie können beliebig kombiniert werden und die Ableitung am Ausgang Schichten wird das Produkt von der Verlust-Derivat und die Aktivierung Derivat.

Allerdings, ich konnte zur Umsetzung der Ableitung der Softmax-Aktivierung-Funktion unabhängig von etwaigen Verlust-Funktion. Aufgrund der Normalisierung, d.h. der Nenner in der Gleichung, die das ändern einer einzelnen input-Aktivierung ändert sich alle output-Aktivierungen und nicht nur eine.

Hier ist mein Softmax-Implementierung, wo die Ableitung fehl, ist der gradient der überprüfung von über 1%. Wie kann ich die Umsetzung der Softmax-Derivat, so dass es sein kann, kombiniert mit einem Verlust der Funktion?

import numpy as np


class Softmax:

    def compute(self, incoming):
        exps = np.exp(incoming)
        return exps /exps.sum()

    def delta(self, incoming, outgoing):
        exps = np.exp(incoming)
        others = exps.sum() - exps
        return 1 /(2 + exps /others + others /exps)


activation = Softmax()
cost = SquaredError()

outgoing = activation.compute(incoming)
delta_output_layer = activation.delta(incoming) * cost.delta(outgoing)
InformationsquelleAutor danijar | 2015-11-05
Schreibe einen Kommentar