我正在处理一个包含2个特征x,y坐标的时间序列数据的数据集。我对根据先前坐标预测未来的x,y(如果可能的话,作为一个元组)很有趣。我对深度学习还很陌生,我一直在关注Kaggle上的这篇文章
Intro to Recurrent Neural Networks LSTM | GRU
google搜索给了我一个答案,即LSTM层中的input_shape
需要一个3D元组(batch_size, time_steps, feature
)。基于这些知识,我研究了2D数据(x,y):
X_train = []
y_train = []
for i in range(60,len(train_set_scaled)):
X_train.append(training_set_scaled[i-60:i,0:2])
y_train.append(training_set_scaled[i,0:2])
X_train, y_train = np.array(X_train), np.array(y_train)
print X_train.shape
(6208,60,2)
因为它是3D元组,所以我没有对其进行整形并继续。
## model begins here
regressor = Sequential()
regressor.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1:]))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units=50))
regressor.add(Dropout(0.2))
regressor.add(Dense(units=2)) ## i am predicting future x,y
我的代码有效,我不确定输出。我所预测的真的是x,y吗?因为如果我给units=3
,我将得到3D输出,而units=1
,我将得到1D输出。那到底是什么意思?我猜想我在给n
时迫使网络收敛到units=n
的输出。如果我的问题不清楚,请告诉我。
答案 0 :(得分:2)
通常,在定义模型类型后,您需要使用model.fit
方法来使其适合数据。
model.fit(X_train, y_train)
输出的大小由y_train
的形状定义,即用于训练的标签矢量的大小。
要预测y,您应该做类似的事情
y_prob = model.predict(X_test)
希望这个回答您的问题