Cómo procesar la forma de entrada y salida para keras LSTM

Estoy aprendiendo sobre RNN y escribí este sencillo modelo LSTM en keras (theano) usando un conjunto de datos de muestra generado mediante sklearn.

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) 

El conjunto de datos de muestra contiene 9 características y 2 objectives. cuando intenté ajustar mi modelo usando esas características y objectives, me está dando este error

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

Si estoy en lo cierto, entonces LSTM espera una entrada 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) 

ACTUALIZACIÓN : Si desea convertir X, Y = make_regression(100, 9, 9, 2) a 3D, entonces puede usar esto.

 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)