Python 如何处理keras LSTM的输入和输出形状

Python 如何处理keras LSTM的输入和输出形状,python,theano,keras,Python,Theano,Keras,我正在学习RNN,并使用sklearn生成的样本数据集在keras(theano)中编写了这个简单的LSTM模型 from sklearn.datasets import make_regression from keras.models import Sequential from keras.layers import Dense,Activation,LSTM #creating sample dataset X,Y=make_regression(100,9,9,2) X.shape

我正在学习RNN,并使用sklearn生成的样本数据集在keras(theano)中编写了这个简单的LSTM模型

from sklearn.datasets import make_regression
from keras.models import Sequential
from keras.layers import Dense,Activation,LSTM

#creating sample dataset
X,Y=make_regression(100,9,9,2)
X.shape
Y.shape

#creating LSTM model
model = Sequential()
model.add(LSTM(32, input_dim=9))
model.add(Dense(2))
model.compile(loss='mean_squared_error', optimizer='adam')

#model fitting
model.fit(X, Y, nb_epoch=1, batch_size=32)
示例数据集包含9个功能和2个目标。当我试图使用这些特性和目标来拟合我的模型时,它给了我这个错误

Exception: Error when checking model input: expected lstm_input_9 to have 3 dimensions, but got array with shape (100, 9)

如果我是正确的,那么LSTM需要一个3D输入

X = np.random.random((100, 10, 64))
y = np.random.random((100, 2))

model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
model.add(Dense(2)) 
model.compile(loss='mean_squared_error', optimizer='adam')

model.fit(X, Y, nb_epoch=1, batch_size=32)
更新:如果要将
X,Y=make_回归(100,9,9,2)
转换为3D,则可以使用此选项

from sklearn.datasets import make_regression
from keras.models import Sequential
from keras.layers import Dense,Activation,LSTM

#creating sample dataset
X, Y = make_regression(100, 9, 9, 2)
X = X.reshape(X.shape + (1,))

#creating LSTM model
model = Sequential()
model.add(LSTM(32, input_shape=(9, 1)))
model.add(Dense(2))
model.compile(loss='mean_squared_error', optimizer='adam')

model.fit(X, Y, nb_epoch=1, batch_size=32)

是否有任何方法将此
X,Y=make_回归(100,9,9,2)
转换为3D输入这条线
X=X.resporate(X.shape+(1,)
的作用是什么?即使在那之后,模型也不适合并且显示出一些错误?如果有人感兴趣,我通过如下方式重新塑造我的
X
值来解决问题
X=X.respore(X.shape[0],1,X.shape[1])