2017-02-21 2 views
0

스테이트 풀 LSTM을 만들고 싶습니다.스테이트 풀 LSTM 구현

내 데이터는 68871 x 43이며, 기능은 열 번호에 있습니다. 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을 참조하십시오.

또한 stateful 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는 1stm 시간대입니다. 43은 입력 된 숫자입니다. – user3218279

관련 문제