2016-06-28 18 views
5

Mam LSTM w Keras, którego uczę, aby przewidzieć na dane szeregów czasowych. Chcę, aby sieć generowała prognozy dla każdego taktu, ponieważ będzie otrzymywać nowe wejście co 15 sekund. Więc z czym walczę, to właściwy sposób trenowania go tak, aby wyprowadzał h_0, h_1, ..., h_t, jako stały strumień, gdy otrzymuje x_0, x_1, ...., x_t jako strumień danych wejściowych . Czy jest to najlepsza praktyka?Strumień wyjściowy przewidywań w kamerze

enter image description here

Odpowiedz

4

Można włączyć statefulness w swoich warstwach LSTM ustawiając stateful=True. Zmienia to zachowanie warstwy, aby zawsze używać stanu poprzedniego wywołania warstwy, zamiast resetować ją dla każdego layer.call(x).

Na przykład warstwa LSTM z 32 jednostek o wielkości wsadu 1, długość 64 i sekwencji o długości funkcji 10:

LSTM(32, stateful=True, batch_input_shape=(1,64,10)) 

z tym kolejnych wywołań predict użyje poprzednich stanów.

+1

A więc .reset_states() będzie funkcją do rozpoczęcia nowej sekwencji wejść? Bardzo fajne, dziękuję! – Rob

+0

Tak. Zapomniałem o tym wspomnieć, przepraszam. – nemo

+0

@nemo Mam pytanie uzupełniające [tutaj] (http://stackoverflow.com/questions/38313673/lstm-with-keras-for-mini-batch-training-and-online-testing). Czy mógłbyś rzucić okiem? – BoltzmannBrain