【发布时间】:2017-02-21 18:11:40
【问题描述】:
我想创建一个有状态的 LSTM
我的数据是 68871 x 43,其中的特征在列中。 1-42 并在第 1 列中标注。 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 有状态 提前非常感谢!!!!!
【问题讨论】:
标签: machine-learning tensorflow deep-learning keras