2017-10-07 1 views
0

を学んでいないと私は順番に3つの以前の数字に基づいて、次のバイナリ用語を予測するLSTMモデルを作成したいと思います。Keras LSTMモデルは、私は、整数{0,1}のバイナリシーケンスを持っているバイナリ・シーケンス

たとえば列車シーケンス[0,1,1,0,1,0,0,1]が与えられると、最初の3つの数字[0,1,1]に対して、モデルは出力番号0、次のシーケンス[1,1,0]に対してモデルは1を出力し、次のシーケンス[1,0,1]は0を出力するなどとなります。

私は

array([[[0], 
     [1], 
     [1]], 

     [[1], 
     [1], 
     [0]], 

     [[1], 
     [0], 
     [1]], 

     [[0], 
     [1], 
     [0]], 

     [[1], 
     [0], 
     [0]]]) 

vecX

という名前の次のトレーニング入力セットとvecY名前付きセットouputを対応するトレーニング作成した上記の例を考えると、そうするには、次の

array([[0], 
[1], 
[0], 
[0], 
[1]]) 

は、私はまた、次のkerasを作成しますより大きなトレーニングセットのためのLSTMネットワーク

LSTM_net = Sequential() 
LSTM_net.add(LSTM(1,input_shape=(3,1))) 
LSTM_net.add(Dense(1,activation="softmax")) 
LSTM_net.compile(optimizer="adagrad", loss="binary_crossentropy",metrics=["accuracy"]) 
LSTM_net.fit(vecX,vecY,batch_size=256,epochs=100,verbose=2) 

sのそれはザ・訓練を受けたモデルを結果

1s - loss: 0.7534 - acc: 0.4992 
Epoch 2/1000 
0s - loss: 0.7533 - acc: 0.4992 
Epoch 3/1000 
0s - loss: 0.7534 - acc: 0.4992 
Epoch 4/1000 
0s - loss: 0.7534 - acc: 0.4992 
Epoch 5/1000 
0s - loss: 0.7534 - acc: 0.4992 

全体の訓練プロセスの間に一定の精度で立ち往生モデルは、電車やテスト・セット内のすべての入力に対してのみ一定の0予測を与え、およそすべてで何かを学習しているようですシーケンス。

softmax、sigmoid、linearのような他のアクティベーションを試みましたが、精度の向上は見られませんでした。私はshuffle = Falseパラメータでフィッティングしようとしましたが、私は同じ結果を得ました。

私は間違っていますか?

+0

この質問は、実際のプログラミングよりも、機械学習の方法についての詳細であれば、多分https://stats.stackexchange.comの人は – Sentry

+0

あなたがreluまたはその変種のいずれかを使用したのを助けることができますか? –

答えて

0

Softmaxは、カテゴリ分類のためのものです。 1つだけが正しい多くのクラス。

常に1になります。クラスが1つしかないため、結果は常に1になります。

代わりにsigmoidを使用してください。

+0

私は活性化関数を 'sigmoid'に変更しましたが、同じ結果が得られました。私は次のコードを試した: –

+0

多分あなたはあまりにもいくつかのパラメータがあります。 1セルは実際には非常に明るいレイヤーではありません。 –

関連する問題