LSTM和Keras一起进行小批量培训和在线测试

玻尔兹曼脑

我想在Keras中实现LSTM以便进行流时间序列预测-即在线运行,一次获取一个数据点。在这里对此进行了很好的解释,但是正如人们可能会假设的那样,在线LSTM的培训时间可能会非常缓慢。我想在迷你批次上训练我的网络,并在线测试(运行预测)。在Keras中执行此操作的最佳方法是什么?

例如,小批量可以是[33, 34, 42, 33, 32, 33, 36, ... 24, 23]在连续的时间步长处出现的1000个数据值(的序列为了训练网络,我指定了一个X形状数组(900, 100, 1),其中有900个长度为100的序列和一个y形状数组(900, 1)例如,

X[0] = [[33], [34], [42], [33], ...]]
X[1] = [[34], [42], [33], [32], ...]]
...
X[999] = [..., [24]]

y[999] = [23]

因此,对于每个序列X[i],都有一个对应的y[i]代表时间序列中的下一个值,即我们要预测的值。

在测试中,我想预测下一个数据值1000到1999。我通过(1, 100, 1)为1000到1999的每个步骤提供形状数组来进行预测,在该模型中,模型尝试预测下一个数据值。

这是针对我的问题的推荐方法和设置吗?启用有状态性可能是纯在线实施的一种方式,但是在Keras中,这需要一致batch_input_shape的培训和测试,这对我的小批量培训然后在线测试的意图而言是行不通的。还是有办法可以做到这一点?

更新:尝试按照@nemo建议实施网络

我从博客文章“使用Keras用Python用LSTM递归神经网络进行时间序列预测”在示例网络上运行了自己的数据集,然后尝试将预测阶段实现为有状态网络。

两者的模型构建和培训是相同的:

# Create and fit the LSTM network
numberOfEpochs = 10
look_back = 30
model = Sequential()
model.add(LSTM(4, input_dim=1, input_length=look_back))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, nb_epoch=numberOfEpochs, batch_size=1, verbose=2)
# trainX.shape = (6883, 30, 1)
# trainY.shape = (6883,)
# testX.shape = (3375, 30, 1)
# testY.shape = (3375,)

批量预测通过以下方式完成:

trainPredict = model.predict(trainX, batch_size=batch_size)
testPredict = model.predict(testX, batch_size=batch_size)

为了尝试有状态的预测阶段,我运行了与以前相同的模型设置和训练,但随后执行了以下操作:

w = model.get_weights()
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')
trainPredictions, testPredictions = [], []
for trainSample in trainX:
    trainPredictions.append(model.predict(trainSample.reshape((1,look_back,1)), batch_size=batch_size))
trainPredict = numpy.concatenate(trainPredictions).ravel()
for testSample in testX:
    testPredictions.append(model.predict(testSample.reshape((1,look_back,1)), batch_size=batch_size))
testPredict = numpy.concatenate(testPredictions).ravel()

为了检查结果,以下图表以蓝色显示了实际(规范化)数据,以绿色显示了对训练集的预测,以红色显示了对测试集的预测。

批量预测结果

有状态预测的结果

第一个数字来自使用批处理预测,第二个数字来自有状态。有什么想法我做错了吗?

尼莫

如果我对您的理解正确,那是在问您是否可以在训练后启用有状态性。这应该是可能的,是的。例如:

net = Dense(1)(SimpleRNN(stateful=False)(input))
model = Model(input=input, output=net)

model.fit(...)

w = model.get_weights()
net = Dense(1)(SimpleRNN(stateful=True)(input))
model = Model(input=input, output=net)
model.set_weights(w)

之后,您可以以有状态的方式进行预测。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tensorflow小批量培训

来自分类Dev

Tensorflow小批量培训

来自分类Dev

在 Keras 中使用连接层进行小批量学习?

来自分类Dev

选择最小批量大小以进行深度学习

来自分类Dev

RL 中的小批量

来自分类Dev

尽管掩盖了对喀拉拉邦零填充小批量LSTM训练的支持,但零预测

来自分类Dev

Pytorch:过小批量安装:调试

来自分类Dev

最小批量学习中列向量和行向量相乘的批处理

来自分类Dev

并发小批量运行承诺(一次不超过X)

来自分类Dev

小批量k均值返回少于k个簇

来自分类Dev

如何在python中实现小批量梯度下降?

来自分类Dev

如何在python中实现小批量梯度下降?

来自分类Dev

使用pyro的深度生成模型中的小批量概念

来自分类Dev

实体框架和LINQ一起批量更新

来自分类Dev

使用小批量训练时如何加快神经网络的训练?

来自分类Dev

Torch / Lua,用于小批量训练的神经网络结构是什么?

来自分类Dev

PyTorch中的GPU如何处理小批量生产?

来自分类Dev

如何在Tensorflow 2中实现小批量梯度下降?

来自分类Dev

将随机梯度下降转换为小批量梯度下降

来自分类Dev

Theano将类别交叉熵(负对数似然性)与小批量结合使用

来自分类Dev

如何在 MXNet 的 C++ 中预测小批量示例?

来自分类Dev

Keras LSTM在线学习

来自分类Dev

将pandoc与RStudio Markdown一起使用以转换为MS Word的语法是什么?如何使用它来包括参考书目和在线引用?

来自分类Dev

在keras中将CNN与LSTM一起使用时,池化层是否是强制性的?

来自分类Dev

在keras中将Gensim Fasttext模型与LSTM nn一起使用

来自分类Dev

与numpy和测试套件一起包装

来自分类Dev

随机和列表切片无法与在线世界列表一起使用

来自分类Dev

一起使用IN和LIKE子句进行休眠

来自分类Dev

如何使用VBA将MS Excel文件页面大小从信函页面大小批量转换为合法页面大小

Related 相关文章

  1. 1

    Tensorflow小批量培训

  2. 2

    Tensorflow小批量培训

  3. 3

    在 Keras 中使用连接层进行小批量学习?

  4. 4

    选择最小批量大小以进行深度学习

  5. 5

    RL 中的小批量

  6. 6

    尽管掩盖了对喀拉拉邦零填充小批量LSTM训练的支持,但零预测

  7. 7

    Pytorch:过小批量安装:调试

  8. 8

    最小批量学习中列向量和行向量相乘的批处理

  9. 9

    并发小批量运行承诺(一次不超过X)

  10. 10

    小批量k均值返回少于k个簇

  11. 11

    如何在python中实现小批量梯度下降?

  12. 12

    如何在python中实现小批量梯度下降?

  13. 13

    使用pyro的深度生成模型中的小批量概念

  14. 14

    实体框架和LINQ一起批量更新

  15. 15

    使用小批量训练时如何加快神经网络的训练?

  16. 16

    Torch / Lua,用于小批量训练的神经网络结构是什么?

  17. 17

    PyTorch中的GPU如何处理小批量生产?

  18. 18

    如何在Tensorflow 2中实现小批量梯度下降?

  19. 19

    将随机梯度下降转换为小批量梯度下降

  20. 20

    Theano将类别交叉熵(负对数似然性)与小批量结合使用

  21. 21

    如何在 MXNet 的 C++ 中预测小批量示例?

  22. 22

    Keras LSTM在线学习

  23. 23

    将pandoc与RStudio Markdown一起使用以转换为MS Word的语法是什么?如何使用它来包括参考书目和在线引用?

  24. 24

    在keras中将CNN与LSTM一起使用时,池化层是否是强制性的?

  25. 25

    在keras中将Gensim Fasttext模型与LSTM nn一起使用

  26. 26

    与numpy和测试套件一起包装

  27. 27

    随机和列表切片无法与在线世界列表一起使用

  28. 28

    一起使用IN和LIKE子句进行休眠

  29. 29

    如何使用VBA将MS Excel文件页面大小从信函页面大小批量转换为合法页面大小

热门标签

归档