2017-03-13 6 views
3

Ich habe sequentielle Daten und ich erklärte ein LSTM-Modell, das y mit x in Keras vorhersagt. Also, wenn ich model.predict(x1) und model.predict(x2) anrufen, ist es korrekt, model.reset_states zwischen den beiden predict() explizit aufzurufen? Ist model.reset_states Vergangenheit der Eingänge, nicht Gewichte, klar?Wie man model.reset_states() in Keras verwendet?

# data1 
x1 = [2,4,2,1,4] 
y1 = [1,2,3,2,1] 

# dat2 
x2 = [5,3,2,4,5] 
y2 = [5,3,2,3,2] 

Und in meinem eigentlichen Code, ich verwende model.evaluate(). In revue() wird reset_states implizit für jedes Datensample aufgerufen?

model.evaluate(dataX, dataY) 

Antwort

4

reset_states löscht nur die versteckten Zustände Ihres Netzwerks. Es ist erwähnenswert, dass abhängig davon, ob die Option stateful=True in Ihrem Netzwerk festgelegt wurde - das Verhalten dieser Funktion möglicherweise anders ist. Wenn es nicht gesetzt ist - alle Zustände werden automatisch nach jeder Stapelberechnung in Ihrem Netzwerk zurückgesetzt (also beispielsweise nach dem Aufrufen von fit, predict und evaluate auch). Wenn nicht - sollten Sie jedes Mal reset_states aufrufen, wenn Sie aufeinanderfolgende Modellaufrufe unabhängig machen wollen.

+0

Ich habe es. Wenn ich keine Stateful-Option setze (also default = false), muss ich reset_states nicht aufrufen, oder? Und könnten Sie mir sagen, welche Art von Fällen ich Stateful = True verwenden sollte? – jef

+1

Ja, Sie haben Recht. 'stateful = True 'wird normalerweise verwendet, wenn Sie aufeinanderfolgende Batches als konsekutive Eingaben behandeln möchten. In diesem Fall behandelt das Modell die Folgechargen genauso wie in der gleichen Charge. –

+0

Danke. Ich akzeptiere deine Antwort. – jef

Verwandte Themen