2016-10-11 18 views
0

私はRNNについて学んでおり、sklearnを使って生成されたサンプルデータセットを使ってkeras(theano)でこの単純なLSTMモデルを書いています。ケラスの入力と出力の形状を処理する方法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) 
+0

興味のいずれか私は([0]、1、X.shape [1] X.shape) ' – Eka

答えて

1

私は、このエラーを与えて、私は正しいんだ場合は、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) 

UPDATE:あなたは3DにX, Y = make_regression(100, 9, 9, 2)を変換したい場合は、これを使用することができます。

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) 
+0

があるこの' X = X.reshapeように私 'X'値を整形することにより問題を解決している場合この 'X、Y = make_regression(100,9,9,2)'を3D入力に変換する方法 – Eka

+0

@Ekaは答えを更新しました –

+0

この行は何ですか 'X = X.reshape(X.shape +(1、)) ) 'はしますか?そのモデルの後もフィットしていないし、いくつかのエラーを示していますか? – Eka

関連する問題