を学んでいないと私は順番に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パラメータでフィッティングしようとしましたが、私は同じ結果を得ました。
私は間違っていますか?
この質問は、実際のプログラミングよりも、機械学習の方法についての詳細であれば、多分https://stats.stackexchange.comの人は – Sentry
あなたがreluまたはその変種のいずれかを使用したのを助けることができますか? –