LSTM输出Dense需要2d输入

时间:2018-08-13 17:06:50

标签: python machine-learning neural-network keras recurrent-neural-network

我具有(size,2)形状的特征和具有(size,1)形状的标签,即特征中的[x,y],标签将为z。我想在keras中构建一个LSTM可以做到这一点,因为该功能以某种方式与以前的输入(即1或多个)相关联(我相信它是一个超参数)。

样本数据集值为:-

features     labels

[1,2]         [5]

[3,4]         [84]

这是我到目前为止所做的:-

print(labels.shape)     #prints (1414,2)
print(features.shape)   #prints(1414,1)
look_back=2

# reshape input to be [samples, time steps, features]
features = np.reshape(features, (features.shape[0], 1, features.shape[1]))
labels = np.reshape(labels, (labels.shape[0], 1, 1))

X_train, X_test, y_train, y_test = train_test_split(features,labels,test_size=0.2)

model = Sequential()
model.add(LSTM(4, input_shape=(1, look_back)))   #executing correctly
model.add(Dense(1))    #error here is "ValueError: Error when checking target: expected dense_1 to have 2 dimensions, but got array with shape (1131, 1, 1)"
model.summary()
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, y_train, epochs=100, batch_size=1, verbose=2)

所以有人可以帮助我构建一个最小的LSTM示例来运行我的代码吗?谢谢。我不知道致密层如何具有2维,我的意思是它是整数,表示要在致密层中使用多少个单位。

1 个答案:

答案 0 :(得分:2)

您不得重塑标签。

尝试一下:

.keep