Ich versuche derzeit, die Ergebnisse des folgenden Artikels zu reproduzieren.
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
Ich benutze Keras mit dem Theano Backend. In dem Artikel spricht er davon, die Temperatur der finalen Softmax-Schicht so zu steuern, dass verschiedene Outputs erreicht werden.Wie ändere ich die Temperatur eines Softmax-Ausgang in Keras
Temperatur. Wir können auch mit der Temperatur des Softmax während der Probenahme spielen. Verringern der Temperatur von 1 auf etwas niedrigere Nummer (z.B. 0,5) macht den RNN zuversichtlicher, aber auch mehr konservativ in seinen Proben. Umgekehrt ergeben höhere Temperaturen mehr Vielfalt, aber auf Kosten von mehr Fehlern (z. B. Rechtschreibfehler, usw.). Insbesondere Einstellung Temperatur sehr nahe Null gibt das höchstwahrscheinlich, was Paul Graham sagen könnte:
Mein Modell ist wie folgt.
model = Sequential()
model.add(LSTM(128, batch_input_shape = (batch_size, 1, 256), stateful = True, return_sequences = True))
model.add(LSTM(128, stateful = True))
model.add(Dropout(0.1))
model.add(Dense(256, activation = 'softmax'))
model.compile(optimizer = Adam(),
loss = 'categorical_crossentropy',
metrics = ['accuracy'])
Der einzige Weg, ich wäre es, die Temperatur der letzten Dense Schicht einzustellen denken kann, die Gewichtsmatrix und multipliziert es mit der Temperatur zu bekommen. Kennt jemand einen besseren Weg, es zu tun? Auch wenn irgendjemand etwas falsch sieht, wie ich das Modell einrichte, lassen Sie es mich wissen, da ich neu bei RNNs bin.
Ist der letzte Unterschied zu 'np.random.choice (len (a), p = a)'? – danijar
Dies ist nicht der Standard-Softmax mit Temperatur wie hier definiert: https: //en.wikipedia.org/wiki/Softmax_function (in der Verstärkung Lernabschnitt). Warum wird ein Protokoll angewendet, bevor es durch die Temperatur geteilt wird? –