Keras extrem hohe Verluste, nicht sinkt mit jeder Epoche
Ich bin mit Keras zu bauen und Zug in einem rekurrenten neuronalen Netzwerk.
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Masking
from keras.layers.recurrent import LSTM
#build and train model
in_dimension = 3
hidden_neurons = 300
out_dimension = 2
model = Sequential()
model.add(Masking([0,0,0], input_shape=(max_sequence_length, in_dimension)))
model.add(LSTM(hidden_neurons, return_sequences=True, input_shape=(max_sequence_length, in_dimension)))
model.add(LSTM(hidden_neurons, return_sequences=False))
model.add(Dense(out_dimension))
model.add(Activation('softmax'))
model.compile(loss="categorical_crossentropy", optimizer="rmsprop")
model.fit(padded_training_seqs, training_final_steps, nb_epoch=5, batch_size=1)
padded_training_seqs
ist ein ein array von Sequenzen von [Breitengrad, Längengrad, Temperatur], die alle gepolstert, um die gleiche Länge mit den Werten von [0,0,0]. Wenn ich trainiere, in diesem Netzwerk, der ersten Epoche gibt mir einen Verlust von über 63, und erhöht nach mehr Epochen.
Dies bewirkt eine model.predict
Gespräch zu einem späteren Zeitpunkt in den code zu geben, Werte, die sind völlig aus der Ausbildung Werte. Zum Beispiel, die meisten von der Ausbildung Werte in jeder Folge ist etwa [40, 40, 20]
, aber der RNN-Ausgänge Werte konstant bei rund [0.4, 0.5]
, die mich veranlasst, zu denken, dass etwas falsch ist mit dem masking layer.
Dem training X (padded_training_seqs
) Daten sieht ungefähr so aus (nur viel größer):
[
[[43.103, 27.092, 19.078], [43.496, 26.746, 19.198], [43.487, 27.363, 19.092], [44.107, 27.779, 18.487], [44.529, 27.888, 17.768]],
[[44.538, 27.901, 17.756], [44.663, 28.073, 17.524], [44.623, 27.83, 17.401], [44.68, 28.034, 17.601], [0,0,0]],
[[47.236, 31.43, 13.905], [47.378, 31.148, 13.562], [0,0,0], [0,0,0], [0,0,0]]
]
sowie die Ausbildung Y (training_final_steps
) Daten sieht wie folgt aus:
[
[44.652, 39.649], [37.362, 54.106], [37.115, 57.66501]
]
keras.optimizers.RMSprop
Instanz der model.compile
nennen.Danke, aber ich habe das problem behob, aber jetzt ein Modell.Vorhersagen nennen, ist die Rückgabe immer den gleichen Wert, unabhängig von der x-Daten, eingespeist in es. Wissen Sie, was könnte die Ursache sein? Das gesamte Projekt ist hier github.com/jeshaitan/migration-lstm
Hi, wie hast du dein problem lösen? Sind Sie wirklich mit hoher Lern-rate? Von Ihrem Programm, ich denke, Sie sind mit dem Standard-lernen-rate, das sind 0.01 Recht?
Ja, ich habe gerade eine dropout-Schicht und ordnete die Schichten im Modell als mir vorgeschlagen, von einem Keras Betreuer. Mein neues problem ist noch nicht gelöst werden, jedoch. Ich denke, es könnte sein, das Netzwerk überanpassung, weil Modell.Vorhersagen konvergiert auf einen Wert.
meine neue Frage ist im Grunde hier skizzierten stats.stackexchange.com/questions/204329/...
InformationsquelleAutor jeshaitan | 2016-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin etwas sicher, dass Sie missbrauchen die Maskierung Schicht von Keras. Überprüfen Sie die Dokumentation hier für mehr details.
Versuchen Sie es mit einer Maskierung Schicht wie:
model.add(Masking(0, input_shape=(max_sequence_length, in_dimension)))
weil ich glaube, es braucht nur die Maskierung mit dem Wert in der Zeitschritt dimension, nicht die ganze Zeit-dimension und den Wert (ie - [0,0,0]).
Viel Glück.
InformationsquelleAutor Lucas Ramadan