0
我想創建一個有狀態的LSTMStateful 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狀態 預先感謝這麼多!!!!!
輸入形狀必須在model.add()中提供,我嘗試過很多輸入大小,但它是拋出錯誤。 你能推薦一些有效的輸入大小嗎? – user3218279
print trainX.shape給出了什麼? –
它打印(46137,5,43) :46137是沒有。火車樣本 5是lstm時間步長 43是輸入維數 – user3218279