2017-08-22 10 views
1

Ich versuche, ein einfaches einschichtiges neuronales LSTM-Netzwerk mit Keras zu bauen, das eine Dense() Ausgabeschicht mit einem Neuron (für die Regression verwendet) hat.Welche Daten Reskalierung Vorverarbeitung muss ich vor dem Training eines LSTM NN tun?

Ich weiß, dass die Trainingsdaten, wenn ich das Modell fit() neu skaliert werden müssen. Viele Online-Beispiele skalieren sowohl den Eingang als auch den Ausgang innerhalb des Bereichs [0,1], andere innerhalb des Bereichs [-1,1].

Was ist die richtige Wahl für die Neuskalierung der Eingabe und der Ausgabe für ein einfaches Regressionsproblem wie meins und warum? Ich weiß, dass es mit den Aktivierungsfunktionen zu tun hat, die z. Sigmoid gibt Werte innerhalb von [0,1] aus.

Ich habe gesehen, dass Sie die Aktivierungsfunktion und wiederkehrende Aktivierung auswählen können. Wie werden die Aktivierungsfunktionen im Kontext einer LSTM() in Keras implementiert (z. B. hat das Eingangstor ein "Sigmoid")?

Danke!

+0

Sie erhalten wahrscheinlich eine Antwort auf diese Frage auf [diese Seite] (https://stats.stackexchange.com/questions/tagged/machine-learning), da dies keine programmspezifische Frage ist und nichts hat direkt mit Keras zu tun – DJK

Antwort

0

Für die Skalierung verwende ich normalerweise die Funktion preprocessing.scale von Scikit-Learn. Es gibt gute Ergebnisse. Für eine tiefere Erklärung should I normalize/standardize/rescale

Für LSTM-Schichten wird empfohlen, "RELU" Aktivierungsfunktion zu verwenden, hilft es mit verschwindendem Gradientenproblem diese Antwort zu überprüfen: advantages of RELU. Verwenden Sie für Ihre zweite Schicht (zuletzt) ​​eine lineare Aktivierung, da Sie eine Regression durchführen, wenn Sie eine Klassifizierung durchführen, dann verwenden Sie "Sigmoid".

Verwandte Themen