Основной прогноз временных рядов с помощью lstm

У меня есть последовательность, и я хотел бы сделать простейший LSTM, чтобы предсказать остальную часть последовательности. Это означает, что я хочу начать с использования только предыдущего шага, чтобы предсказать следующий, а затем добавить больше шагов. Я хочу использовать предсказанные значения в качестве входных данных. Поэтому я верю в то, что хочу достичь многого для многих, как упоминалось в ответах " Понимание LSTM Keras".

Я читал другие вопросы на тему stackru, но все же не смог заставить его работать. В моем коде я использую учебник здесь https://machinelearningmastery.com/time-series-prediction-lstm-recurrent-neural-networks-python-keras/ и функцию create_dataset для создания двух массивов со смещением только один шаг.

Вот мой код и ошибка, которую я получил.

"Here I'm scaling my data as advised"
scaler = MinMaxScaler(feature_range=(0, 1))
Rot = scaler.fit_transform(Rot)

"I'm creating the model using batch_size=1 but I'm not sure why this is necessary"

batch_size = 1
model = Sequential()
model.add(LSTM(1,batch_input_shape=(batch_size,1,1),stateful=True,return_sequences=True,input_shape=(None,1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')

"I want to use only the previous value for now"
look_back = 1
"as len(Rot) = 41000 I'm taking 36000 for training"
train_size = 36000
X,Y = create_dataset(Rot[:train_size,:],look_back)
X = numpy.reshape(X,(X.shape[0], X.shape[1], 1))
Y = numpy.reshape(Y,(X.shape[0], X.shape[1], 1))

And now I train my network as advised by @Daniel Möller. 

epochs = 10

for epoch in range(epochs):
    model.reset_states()
    model.train_on_batch(X,Y)

" And I get this error "
" PartialTensorShape: Incompatible shapes during merge: [35998,1] vs. [1,1]
     [[{{node lstm_11/TensorArrayStack/TensorArrayGatherV3}}]]."

Знаете ли вы, почему у меня такая ошибка, так как кажется, что я все сделал, как в вышеупомянутой теме?

0 ответов

В этой сети LSTM batch_size=1, потому что она отслеживает состояние. Когда stateful = True, размер train_set и размер test_set при делении на batch_size должны иметь нулевой модуль.

batch_input_shape = (batch_size,1,1) уже определен, тогда почему снова input_shape=(None,1)

Когда return_sequences=True, другой LSTM следует за существующим уровнем LSTM. Но здесь это не так.

Другие вопросы по тегам