実装

2017-02-21 7 views
0

は、私は私のデータは、機能が列なしである68871のx 43、であるステートフルLSTM実装

を作成したいです。 1-42のラベルと列番号のラベル。データの分類のための43

マイkerasのLSTMコードが

import numpy 
import matplotlib.pyplot as plt 
import math 
from keras.models import Sequential 
from keras.layers import Dense 
from keras.layers import LSTM, Dropout 
from sklearn.preprocessing import MinMaxScaler 
from sklearn.metrics import mean_squared_error 
# convert an array of values into a dataset matrix 
def create_dataset(dataset, look_back): 
    dataX, dataY= [], [] 
    for i in range(len(dataset)-look_back-1): 
     a = dataset[i:(i+look_back), 0:43] 
     dataX.append(a) 
     dataY.append(dataset[i + look_back, 43]) 
    return numpy.array(dataX), numpy.array(dataY) 
# fix random seed for reproducibility 
#numpy.random.seed(7) 
# load the dataset 
look_back=5 
dataset = numpy.loadtxt("Source.txt", delimiter=" ") 
# normalize the dataset 
scaler = MinMaxScaler(feature_range=(0, 1)) 
dataset[:,0:43] = scaler.fit_transform(dataset[:,0:43]) 
# split into train and test sets 
train_size = int(len(dataset) * 0.67) 
test_size = len(dataset) - train_size 
train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:] 
trainX, trainY = create_dataset(train, look_back) 
testX, testY = create_dataset(test, look_back) 
print trainX.shape 
#trainX=numpy.reshape(trainX,(46117,43,25)) 
# create and fit the LSTM network 
model = Sequential() 
model.add(LSTM(10, input_dim=43)) 
#model.add(Dropout(0.3)) 
model.add(Dense(1)) 
model.compile(loss='mean_squared_error', optimizer='adagrad') 
model.fit(trainX, trainY, nb_epoch=10, batch_size=5) 
model.evaluate(testX, testY, batch_size=1) 

で事前にそんなにLSTMステートフル 感謝を作るためになされる変更内容を提案してください!!!!!

答えて

0
model.add(LSTM(10, input_shape=(5,43), stateful=True)) 

あなたが探しているのは私だと思います。 here for documentationを参照してください。

また、ステートフルなlstmを使用する場合は、トレーニングデータをシャッフルするのは意味がありません(これがデフォルトです)。したがって、この行も変更してください:

model.fit(trainX, trainY, nb_epoch=10, batch_size=5, shuffle=False) 
+0

入力形状はmodel.add()で指定する必要がありますが、多くの入力サイズで試してみましたが、エラーが発生しています。 有効な入力サイズをお勧めしますか? – user3218279

+0

print trainX.shapeは何を提供しますか? –

+0

それが印刷されます(46137,5,43) :46137は番号です。列車のサンプルの 5は、lstmタイムステップです 43入力の数は – user3218279