Vorhersagen mit einem Keras Recurrent Neural Network - Genauigkeit ist immer 1,0

8

TLDR: Wie verwende ich eine Keras-RNN, um den nächsten Wert in einer Sequenz vorherzusagen?

Ich habe eine Liste von sequentiellen Werten. Ich möchte sie in einen RNN einspeisen, um den nächsten Wert in der Sequenz vorherzusagen .

%Vor%

Ich benutze Keras, um dies zu tun und kann ein Netzwerk mit abnehmendem Verlust bekommen, aber die Genauigkeit ist konstant 1,0. Das ist falsch. y_tests != model.predict(x_tests) .

%Vor%

Hier ist mein Netzwerk.

%Vor%

Ich habe versucht ein SimpleRNN, GRU und LSTM, aber hatte kein Glück. Hier ist, wie die Daten formatiert sind.

%Vor%

Jedes Element in x_train_10 ist eine Liste der vorherigen 10 Werte. Ich habe es so formatiert, dass ich Keras 'Dokumentation folge, dass wiederkehrende Ebenen Eingaben mit der Form (nb_samples, timesteps, input_dim) machen.

Ich habe auch versucht, eine Embedding -Schicht ohne Glück zu benutzen. (Dies kann der falsche Weg sein, es zu benutzen - ich habe es nur in der Klassifizierung nicht Vorhersage gesehen).

%Vor%

pad_sequences hat auch nicht funktioniert.

%Vor%

Ich möchte, dass die RNN mit dieser einfachen Daten / Architektur arbeitet, damit ich sie später für komplexere Probleme verwenden kann.

Danke:)

    
Ty Pavicich 24.09.2015, 22:11
quelle

2 Antworten

7

Ich habe eine ähnliche Frage auf der Seite von Keras Github gestellt und eine gute Antwort bekommen.

lukedeo sagte, dass acc: 1.0000 bedeutet, dass sowohl die wahre Ausgabe als auch die vorhergesagte Ausgabe größer als 0,5 sind oder umgekehrt. Stattdessen sollte ich den Verlust oder mse betrachten, um die Genauigkeit des Modells zu bestimmen. Dies liegt daran, dass mein Netzwerk eine Regression ist, kein Klassifizierer / Clusterer.

Der mittlere quadratische Fehler ist ein gutes Maß für die Genauigkeit. accuracy_percent = 1 - np.sqrt(mse)

fchollet (der Keras-Schöpfer), indem er sagte, dass " Genauigkeit für ein Regressionsproblem überhaupt nicht relevant ist ."

Wenn ein Klassifizierungsproblem auftritt, kann die Genauigkeit relevant gemacht werden, indem class_mode auf 'categorical' oder 'binary' in model.comple(...) gesetzt wird, abhängig vom Ziel (Netzwerkausgabe).

    
Ty Pavicich 25.09.2015, 18:25
quelle
4

Versuchen Sie RMSProp als Optimierer

%Vor%     
Hardkun 23.03.2016 01:11
quelle

Tags und Links