Deep learning 如何使用RNN使用6个时间步预测下一个4个时间步

Deep learning 如何使用RNN使用6个时间步预测下一个4个时间步,deep-learning,lstm,recurrent-neural-network,Deep Learning,Lstm,Recurrent Neural Network,我得到了一个以6个数据点+4个数据点为标签的数据集,他们要求使用6个数据步预测这4个时间步 你能告诉我什么样的模型以及我应该如何使用它吗?我考虑了一些RNN,因为每个点都有时间 谢谢 这些预测依赖于先前输入的问题通常使用RNN网络(RNN、gru和lstm),因为它们保留了先前的状态信息。 为了加深理解: 请仔细阅读我在代码中写的注释 from __future__ import absolute_import, division, print_function, unicode_litera

我得到了一个以6个数据点+4个数据点为标签的数据集,他们要求使用6个数据步预测这4个时间步

你能告诉我什么样的模型以及我应该如何使用它吗?我考虑了一些RNN,因为每个点都有时间


谢谢

这些预测依赖于先前输入的问题通常使用RNN网络(RNN、gru和lstm),因为它们保留了先前的状态信息。 为了加深理解:

请仔细阅读我在代码中写的注释

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow.keras import Model
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import RNN, LSTM

"""
creating a toy dataset
lets use this below ```input_sequence``` as the sequence to make data points.
as per the question, we will use 6 points to predict next 4 points
"""
input_sequence = [1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10]

X_train = []
y_train = []

#first 6 points will be our input data points and next 4 points will be data label.
# so on we will shift by 1 and make such data points and label pairs

for i in range(len(input_sequence)-9):
    X_train.append(input_sequence[i:i+6])
    y_train.append(input_sequence[i+6:i+10])

X_train = np.array(X_train, dtype=np.float32)
y_train = np.array(y_train, dtype=np.int32)))
#X_test for the predictions (contains 6 points)
X_test = np.array([[8,9,10,1,2,3]],dtype=np.float32)
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)

#we will be using basic LSTM, which accepts input in ```[num_inputs, time_steps, data_points], therefore reshaping as per that``` 
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)

x_points = X_train.shape[-1]
print("one input contains {} points".format(x_points))

model = Sequential()
model.add(LSTM(4, input_shape=(1, x_points)))
model.add(Dense(4))
model.compile(loss='mean_squared_error', optimizer='adam')
model.summary()

model.fit(X_train, y_train, epochs=500, batch_size=5, verbose=2)
output = list(map(np.ceil, model.predict(X_test)))
print(output)
我们使用了更简单的模型,可以进一步改进以获得更好的结果