TensorFlow 2 «Учебник по прогнозированию временных рядов» (https://www.tensorflow.org/tutorials/structured_data/time_series#recurrent_neural_network) дает пример модели многошагового прогнозирования LSTM, которая с учетом прошлой истории предсказывает диапазон будущих значений:
# Prepare data
train_data_multi = tf.data.Dataset.from_tensor_slices((x_train_multi, y_train_multi))
train_data_multi = train_data_multi.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()
val_data_multi = tf.data.Dataset.from_tensor_slices((x_val_multi, y_val_multi))
val_data_multi = val_data_multi.batch(BATCH_SIZE).repeat()
# Model with two LSTM layers
multi_step_model = tf.keras.models.Sequential()
multi_step_model.add(tf.keras.layers.LSTM(32,
return_sequences=True,
input_shape=x_train_multi.shape[-2:]))
multi_step_model.add(tf.keras.layers.LSTM(16, activation='relu'))
multi_step_model.add(tf.keras.layers.Dense(72))
multi_step_model.compile(optimizer=tf.keras.optimizers.RMSprop(clipvalue=1.0), loss='mae')
# Train model
multi_step_history = multi_step_model.fit(train_data_multi, epochs=EPOCHS,
steps_per_epoch=EVALUATION_INTERVAL,
validation_data=val_data_multi,
validation_steps=50)
В руководстве также показано, как построить некоторые значения, предсказанные LSTM:
def multi_step_plot(history, true_future, prediction):
...
...
for x, y in val_data_multi.take(3):
multi_step_plot(x[0], y[0], multi_step_model.predict(x)[0])
Вопрос: Как выполнить итерацию всех значений x и y (истинных значений) в наборе данных проверки ( val_data_multi
)? Я не могу понять, как получить доступ к этим значениям в tf.data.Dataset.from_tensor_slices
. Кроме того, как получить прогнозы из модели для всех записей в наборе данных проверки для последующего использования при расчете среднего MAE и RMSE модели?