- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个问题与使用 pybrain 进行时间序列回归有关。我计划使用 pybrain 中的 LSTM 层来训练和预测时间序列。
我在下面的链接中找到了示例代码
Request for example: Recurrent neural network for predicting next value in a sequence
在上面的示例中,网络能够在训练后预测序列。但问题是,网络通过一次性将所有顺序数据馈送到输入层来接收所有顺序数据。例如,如果训练数据各有 10 个特征,则这 10 个特征将同时馈入 10 个输入节点。
据我了解,这不再是时间序列预测,对吗?既然每个特征被输入网络的时间没有区别?如果我错了,请纠正我。
因此,我想要实现的是一个只有一个输入节点和一个输出节点的循环网络。输入节点是所有时间序列数据将在不同时间步长顺序输入的地方。网络将被训练以在输出节点复制输入。
您能否建议或指导我构建我提到的网络?非常感谢您。
最佳答案
您可以训练具有单个输入节点和单个输出节点的 LSTM 网络来进行时间序列预测,如下所示:
首先,作为一个好习惯,让我们使用 Python3 的 print 函数:
from __future__ import print_function
然后,制作一个简单的时间序列:
data = [1] * 3 + [2] * 3
data *= 3
print(data)
[1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2]
现在将这个时间序列放入一个监督数据集中,其中每个样本的目标是下一个样本:
from pybrain.datasets import SequentialDataSet
from itertools import cycle
ds = SequentialDataSet(1, 1)
for sample, next_sample in zip(data, cycle(data[1:])):
ds.addSample(sample, next_sample)
构建一个具有 1 个输入节点、5 个 LSTM 单元和 1 个输出节点的简单 LSTM 网络:
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure.modules import LSTMLayer
net = buildNetwork(1, 5, 1,
hiddenclass=LSTMLayer, outputbias=False, recurrent=True)
训练网络:
from pybrain.supervised import RPropMinusTrainer
from sys import stdout
trainer = RPropMinusTrainer(net, dataset=ds)
train_errors = [] # save errors for plotting later
EPOCHS_PER_CYCLE = 5
CYCLES = 100
EPOCHS = EPOCHS_PER_CYCLE * CYCLES
for i in xrange(CYCLES):
trainer.trainEpochs(EPOCHS_PER_CYCLE)
train_errors.append(trainer.testOnData())
epoch = (i+1) * EPOCHS_PER_CYCLE
print("\r epoch {}/{}".format(epoch, EPOCHS), end="")
stdout.flush()
print()
print("final error =", train_errors[-1])
绘制错误(请注意,在这个简单的玩具示例中,我们正在同一数据集上进行测试和训练,这当然不是您在真实项目中所做的!):
import matplotlib.pyplot as plt
plt.plot(range(0, EPOCHS, EPOCHS_PER_CYCLE), train_errors)
plt.xlabel('epoch')
plt.ylabel('error')
plt.show()
现在要求网络预测下一个样本:
for sample, target in ds.getSequenceIterator(0):
print(" sample = %4.1f" % sample)
print("predicted next sample = %4.1f" % net.activate(sample))
print(" actual next sample = %4.1f" % target)
print()
(以上代码基于example_rnn.py
和PyBrain documentation中的例子)
关于python - 使用 LSTM 循环网络进行 Pybrain 时间序列预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25967922/
有没有办法在 PyBrain 中保存和恢复经过训练的神经网络,这样我每次运行脚本时都不必重新训练它? 最佳答案 PyBrain 的神经网络可以使用 python 内置的 pickle/cPickle
我有以下代码: from pybrain.datasets import SupervisedDataSet from pybrain.supervised.trainers import Backp
问题是:经过一番努力,我设法安装了 pybrain,但当我使用命令 export 'PYTHONPATH=$PYTHONPATH:' 时,它仅从终端运行。当我尝试导入模块并用 Python 编写(通过
我正在尝试使用 pybrain 中的NNregression 工具:http://pybrain.org/docs/api/tools.html 我有我的数据集: ds = SupervisedDat
如何删除 Pybrain 中的连接?我使用每个模块一个神经元技术来自定义输入层、单个隐藏层和输出层之间的连接。但现在我想在训练期间操纵该连接,其中一种操纵是删除连接/边缘。 在 Network 类中,
我最近在 PyBrain 中构建了一个神经网络,但遇到了网络太大的问题。 那么 PyBrain 中的确切限制是什么? 如何构建一个具有 750000 个输入、3 个输出和一定数量隐藏节点的网络(目前它
有人可以告诉我如何在 pybrain 中实现步骤激活函数吗? 例如。 def stepActivationFunction(n): if n > 0.5: return 1. else
我试图在 pyBrain 上进行最简单的回归,但不知何故我失败了。 神经网络应该学习函数 Y=3*X from pybrain.supervised.trainers import BackpropT
所以我在 PyBrain 中有一个 ClassificationDataSet,我已经用适当的数据对其进行了训练。即,输入如下: trainSet.addSample([0,0,0,0],[1]) t
我正在尝试使用 pybrains 做迷宫题这是我的问题:我按照教程运行示例 envmatrix = [[...]] env = Maze(envmatrix, (1, 8)) task = MDPMa
我正在尝试为我的 10 维数据集生成一个网格,同时我遵循 http://pybrain.org/docs/tutorial/fnn.html 中的代码.我正在实现并抛出错误的代码是: ticks =
我正在尝试使用以下方式安装 pybrain: git clone git://github.com/pybrain/pybrain.git 我安装了 git 然后使用 windows 命令提示符来执行
我正在尝试训练 ANN 来预测图像属于多个类别的概率,而我的目标值是此类概率的集合。 输入是经过简单整形的 28x28 灰度图片,像素值在 0-255 之间。 一个“目标”如下所示:0.738832,
我正在尝试为强化学习设置 PyBrain,但是当我第一次尝试执行操作时,总是出现相同的错误。 module.py 中的这一行正在抛出断言失败,因为我们正在使用的 ActionValueTable(模块
我目前正在尝试使用 pybrain 创建一个用于股票价格预测的神经网络。到目前为止,我只使用具有二进制输出的网络。对于这些网络,sigmoid 内层就足够了,但我认为这不是预测价格的正确方法。问题是,
每当我在 PyBrain 中调用 splitWithProportion() 函数时,都会收到弃用警告。以下是警告: /usr/local/lib/python2.7/dist-packages/Py
我正在尝试找出在 pybrain 中进行 5 倍交叉验证的正确方法。我浏览了他们的文档,但这没有帮助。我在网上找到了以下两个版本的代码: 在问题中找到这个 here . net = pybrain.t
我想训练一个具有多个输出层的网络。 in->hidden->out 1 ->out 2 这可能吗?如果是这样,我该如何设置数据集和培训师来完成培训。 最佳答案 当您考虑拆分输出以获
我正在尝试预测一组给定商品的销售价格。我在 pybrain 中使用 RecurrentNetwork 和 BackpropTrainer。这是我的代码, def nnet(train, target,
我一直致力于使用 pybrain 创建神经网络,但由于某种原因在使用传播对其进行训练后,它无法训练我的网络。我使用的任何数据集在 out 维度中有两个以上的类,只会将我所有的观察结果归为一个类别。有谁
我是一名优秀的程序员,十分优秀!