2017-10-10 6 views
0

私は、LSTMを使用して単純な多対1のRNNクラシファイアをトレーニングしようとしています。私のタイムステップは100データポイントで7つのフィーチャーがあり、合計192382のサンプルがあります。ここに私のモデルがあります:複数のLSTM、KermaxのSoftmaxディメンションエラー

model = Sequential() 
model.add(LSTM(50,input_shape = (100,7),name = 'LSTM',return_sequences=False)) 
model.add(Dropout(0.2)) 
model.add(Dense(3, activation='softmax',name = 'softmax_layer')) 
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'],name='softmax') 
model.fit(datax,datay,epochs=25,batch_size=128) 
model.summary() 

モデルは誤差なくうまくコンパイルされますが、モデルには適合しません。

ValueError: Error when checking target: expected softmax_layer to have shape (None, 3) but got array with shape (192282, 100) 

softmaxレイヤーが(192282,100)マトリックスを返す理由は誰か分かりますか? LSTM層のreturn_sequence = Falseではなく、タイムステップごとに1つの出力しか得られないと考えられますか?実際

+0

あなたはDATAYに間違った値を渡している、3つのクラスに分類されていると仮定すると、 – ilan

答えて

0

、softmax_layer戻る(なし、3)、最後の層の大きさは、あなたがそれを修正したいおそらく3

ですので?ですから、出力層のサイズ(softmax_layer)は、ラベル配列のサイズ(datay.shape [1])と同じにする必要があります。言い換えれば、それはクラスの数と等しくなければならない。

クイック修正は次のとおりです。

model = Sequential() 
model.add(LSTM(50,input_shape = (100,7),name = 'LSTM',return_sequences=False)) 
model.add(Dropout(0.2)) 
model.add(Dense(datay.shape[1], activation='softmax',name = 'softmax_layer')) 
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'],name='softmax') 
model.fit(datax,datay,epochs=25,batch_size=128) 
model.summary() 
関連する問題