2016-10-10 9 views
1

私はテキスト生成用のRNNを構築しようとしています。私は自分のLSTMセルを構築するのに悩まされています。データはこのような形をしています.Xはdim(90809,2700)の入力スパース行列、Yはdimension(90809,27)の出力行列です。以下はLSTM細胞 - を定義するための私のコードですKerasを使用してLSTMセルを構築する

model = Sequential() 
model.add(LSTM(128, input_shape=(X.shape[0], X.shape[1]))) 
model.add(Dropout(0.2)) 
model.add(Dense(Y.shape[1], activation='softmax')) 
model.compile(loss='categorical_crossentropy', optimizer='adam') 

私の理解input_shapeは、入力行列の次元であるべきであり、緻密層、すなわち、27の各観察のための出力の大きさでなければならないことですこの場合。しかし、次のエラーが表示されます。

Exception: Error when checking model input: expected lstm_input_3 to have 3 dimensions, but got array with shape (90809, 2700) 

私は何がうまくいかないのか分かりません。誰でも3次元を期待しているlstm_inputがなぜなのか理解してもらえますか?よく

X= np.reshape(np.asarray(dataX), (n_patterns, n_vocab*seq_length,1)) 
Y=np.reshape(np.asarray(dataY), (n_patterns, n_vocab,1)) 

これは私にすべてのヘルプが理解されるであろう、次のエラー -

Exception: Error when checking model input: expected lstm_input_7 to have shape (None, 90809, 2700) but got array with shape (90809, 2700, 1) 

を出した

は、私は次のことを試してみました。ありがとう!

答えて

1

input_shape,とinput_dimhereの違いについてお読みください。

input_shapeについては、batch_sizeを定義する必要はありません。これはあなたのLSTM層がどのように見えるかです。

model.add(LSTM(128, input_shape=(X.shape[1], 1))) 

または

model.add(LSTM(128, batch_input_shape=(X.shape[0], X.shape[1], 1))) 
関連する問題