Python-了解Keras LSTM
我试图调和我对LSTM的理解,并在克里斯托弗·奥拉(Christopher Olah)在Keras中实现的这篇文章中指出了这一点。我正在关注Jason Brownlee为Keras教程撰写的博客。我最困惑的是
- 将数据系列重塑为
[samples, time steps, features]
和 - 有状态的LSTM
让我们参考下面粘贴的代码专注于以上两个问题:
# reshape into X=t and Y=t+1look_back = 3
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], look_back, 1))
testX = numpy.reshape(testX, (testX.shape[0], look_back, 1))
########################
# The IMPORTANT BIT
##########################
# create and fit the LSTM network
batch_size = 1
model = Sequential()
model.add(LSTM(4, batch_input_shape=(batch_size, look_back, 1), stateful=True))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
for i in range(100):
model.fit(trainX, trainY, nb_epoch=1, batch_size=batch_size, verbose=2, shuffle=False)
model.reset_states()
注意:create_dataset接受一个长度为N的序列,并返回一个N-look_back数组,每个元素都是一个look_back长度序列。
回答:
首先,你选择伟大的教程(1,2)开始。
Time-step
的含义:Time-steps==3X.shape
(描述数据形状)表示三个粉红色框。由于在Keras中,每个步骤都需要输入,因此绿色框的数量通常应等于红色框的数量。除非你破解结构。
多对多与多对一:在keras中,return_sequences
初始化LSTMor GRU或时有一个参数SimpleRNN
。当return_sequences
为False(默认情况下)时,则如图所示多对一。其返回形状为(batch_size, hidden_unit_length)
,代表最后一个状态。如果return_sequences
是的True话,那就是很多很多。它的返回形状是(batch_size, time_step, hidden_unit_length)
features参数是否相关:Feature
参数的意思是“你的红框有多大”或每步的输入维数是多少?例如,如果你要从8种市场信息中进行预测,则可以使用生成数据feature==8
。
有状态:你可以查找源代码。初始化状态时,如果为stateful==True
,则将最后一次训练的状态用作初始状态,否则将生成新状态。我还没打开stateful
呢。但是,我不同意batch_size
只能将1设为stateful==True
。
当前,你将使用收集的数据生成数据。将你的股票信息以流的形式显示出来,而不是等待一天收集所有顺序记录,而是想在通过网络进行训练/预测时在线生成输入数据。如果你有400只股票共享同一网络,则可以设置batch_size==400
。
以上是 Python-了解Keras LSTM 的全部内容, 来源链接: utcz.com/qa/431187.html