标签: pybrain

使用LSTM循环网络预测Pybrain时间序列

我有一个问题,涉及使用pybrain进行时间序列的回归.我计划在pybrain中使用LSTM层来训练和预测时间序列.

我在下面的链接中找到了示例代码

请求例如:用于预测序列中的下一个值的递归神经网络

在上面的示例中,网络能够在训练后预测序列.但问题是,网络通过将其一次性输入到输入层来接收所有顺序数据.例如,如果训练数据各有10个特征,则10个特征将同时被馈送到10个输入节点.

根据我的理解,这不再是时间序列预测我是对的吗?由于每个功能被馈入网络的时间没有区别?如果我错了,请纠正我.

因此,我想要实现的是一个只有一个输入节点和一个输出节点的循环网络.输入节点是在不同时间步骤顺序馈送所有时间序列数据的地方.将训练网络以在输出节点处再现输入.

您能否建议或指导我构建我提到的网络?非常感谢你提前.

python time-series prediction neural-network pybrain

15
推荐指数
1
解决办法
2万
查看次数

pybrain神经网络不学习

我正在使用pybrain构建一种学习趋化性的药剂(根据化学信号转向食物).代理由神经网络表示,其应基于其与食物的距离来调整其权重.输入是两个传感器神经元,输出是移动代理的两个运动神经元.因此,我有持续的状态和行动.奖励是与食物距离的倒数.

这是我的主循环的本质:

task = ChemotaxisTask(ChemotaxisEnv(), MAX_STEPS)
module = buildNetwork(2,2,2)
learner = HillClimber(task, module, maxEvaluations=MAX_TRIALS, mustMinimize=True, storeAllEvaluations=True, storeAllEvaluated=True, verbose=False)
learner.learn()
Run Code Online (Sandbox Code Playgroud)

我尝试过的方法是:

  • 用Q进行实验(因为我有连续的状态/动作所以不起作用)
  • 使用Reinforce/ENAC进行实验(梯度下降计算无变化)
  • 使用Reinforce/ENAC进行ContinuousExperiment(见上文)
  • 使用HillClimber的EpisodicExperiment(网络权重不会改变)

我决定尝试使用EpisodicExperiment,因为它似乎最适合我的实验.

我终于可以看到网络权重发生变化,但随着时间的推移我的平均适应度不会增加.我能做错什么?

这是我所有代码的Gist存储库:https://gist.github.com/4477624

以下是pybrain文档:http://pybrain.org/docs/index.html 学习者文档(例如Q,Reinforce,HillClimber)位于http://pybrain.org/docs/api/rl/learners.html.

代码本身位于https://github.com/pybrain/pybrain.学习者在https://github.com/pybrain/pybrain/tree/master/pybrain/rl/learners,实验在https://github.com/pybrain/pybrain/tree/master/pybrain/rl/实验.

但是,我正在使用EpisodicExperiment的优化学习者; 这些位于https://github.com/pybrain/pybrain/tree/master/pybrain/optimization.

我相信你可以通过那里的文档和代码找到自己的方式.我正在使用的其他所有内容都在https://github.com/pybrain/pybrain/tree/master/pybrain/rl中.

python machine-learning neural-network pybrain

14
推荐指数
0
解决办法
1601
查看次数

pybrain:如何打印网络(节点和权重)

最后我设法从一个文件训练一个网络:)现在我想打印节点和权重,特别是权重,因为我想用pybrain训练网络,然后在其他地方实现NN将使用它.

我需要一种方法来打印节点之间的层,节点和权重,以便我可以轻松地复制它.到目前为止,我看到我可以使用n ['in']来访问图层,然后例如我可以这样做:

dir(n ['in'])[' class ',' delattr ',' dict ',' doc ',' format ',' getattribute ',' hash ',' init ',' module ',' new ', ' reduce ',' reduce_ex ',' repr ',' setattr ',' sizeof ',' str ',' subclasshook ',' weakref ','_ backwardImplementation','_ forwardImplementation','_ generateName','_ getName','_ growBuffers ','_ name','_ nameIds','_resetBuffers','_ setName','activate','activateOnDataset','argdict','backActivate','backward','bufferlist','dim','forward', 'getName','indim','inputbuffer','inputerror','name','offset','outdim','outputbuffer','outputerror','paramdim','reset','sequential','setArgs ','setName','shift','whichNeuron']

但我不知道如何在这里访问权重.还有params属性,例如我的网络是2 4 1有偏见,它说:

n.params array([ - 0.8167133,1.00077451,-0.7591257,-1.1150532,-1.58789386,0.11625991,0.98547457,-0.99397871,-1.8324281,-2.42200963,1.90617387,1.93741167,-2.88433965,0.27449852,-1.52606976,2.339446258,3.01359547])

很难说是什么,至少在重量连接哪些节点.这就是我所需要的一切.

python neural-network pybrain

11
推荐指数
2
解决办法
8516
查看次数

隐藏层数,隐藏层中的单位和历元直到神经网络开始在训练数据上表现为可接受的行为

我正在尝试使用神经网络解决这个Kaggle问题.我正在使用Pybrain Python Library.

这是一个经典的监督学习问题.在下面的代码中:'data'变量是numpy数组(892*8).7个字段是我的功能,1个字段是我的输出值,可以是"0"或"1".

from pybrain.datasets import ClassificationDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.tools.shortcuts import buildNetwork

dataset = ClassificationDataSet(7,1)
for i in data:
    dataset.appendLinked(i[1:],i[0])
net = buildNetwork(7,9,7,1, bias = True,hiddenclass = SigmoidLayer, outclass = TanhLayer)
trainer = BackpropTrainer(net, learningrate = 0.04, momentum = 0.96, weightdecay = 0.02, verbose = True)
trainer.trainOnDataset(dataset, 8000)
trainer.testOnData(verbose = True)
Run Code Online (Sandbox Code Playgroud)

在训练我的神经网络之后,当我在训练数据上测试它时,它总是为所有输入提供单个输出.喜欢:

Testing on data:
out:     [  0.075]
correct: [  1.000]
error:  0.42767858
out:     [  0.075]
correct: [  0.000]
error:  0.00283875
out:     [  0.075] …
Run Code Online (Sandbox Code Playgroud)

artificial-intelligence machine-learning data-mining neural-network pybrain

11
推荐指数
1
解决办法
4479
查看次数

基于时间序列数据集的递归神经网络预测

描述

给定具有10个序列的数据集 - 序列对应于股票价值记录的一天 - 其中每个序列构成50个样本记录的股票值,其从早晨或上午9:05开始以5分钟的间隔分开.但是,有一个额外的记录(第51个样本)仅在训练集中可用,该记录是在50个样本记录中的最后记录样本的2小时后,而不是5分钟.对于测试集,需要预测第51个样本,其中还给出了前50个样本.

我正在使用pybrain递归神经网络来解决将序列组合在一起的问题,并且y每个样本的标签(或通常称为目标)x_i是下一个时间步骤的样本x_(i+1)- 时间序列预测中的典型公式.

A sequence for one day is something like:

    Signal id    Time      value
        1     -  9:05   -   23
        2     -  9:10   -   31
        3     -  9:15   -   24
       ...    -  ...    -   ...
       50     -  13:15  -   15

Below is the 2 hour later label 'target' given for the training set 
and is required to be predicted for the testing set
       51     -  15:15 …
Run Code Online (Sandbox Code Playgroud)

statistics time-series prediction neural-network pybrain

11
推荐指数
1
解决办法
9044
查看次数

如何在PyBrain中进行有监督的深度信仰训练?

我无法让DeepBeliefTrainer在PyBrain/Python中处理我的数据.由于我无法找到除了无人监督如何在PyBrain中使用深度学习之外的任何示例,我希望有人可以提供一些示例来展示使用的基本概念.

我试图初始化使用:

epochs = 100
layerDims = [768,100,100,1]

net = buildNetwork(*layerDims)
dataset = self.dataset
trainer = DeepBeliefTrainer(net, dataset=dataSet)
trainer.trainEpochs(epochs)
Run Code Online (Sandbox Code Playgroud)

我尝试使用SupervisedDataset进行回归,但训练失败了.有没有人成功使用deeplearning教练进行有监督的机器学习?你是怎么做到的?

我得到的错误:

File "/Library/Python/2.7/site-packages/PyBrain-0.3.1-py2.7.egg/pybrain/structure/networks/rbm.py", line 39, in __init__
self.con = self.net.connections[self.visible][0]
KeyError: None
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network pybrain dbn

10
推荐指数
1
解决办法
1569
查看次数

如何计算或监控pybrain神经网络的训练?

我有一个神经网络n pybrain,有两个输入,一个隐藏层和一个输出层.我使用以下内容进行训练:

trainer = BackpropTrainer(net,ds)
trainer.trainUntilConvergence()
Run Code Online (Sandbox Code Playgroud)

net是神经网络,ds是列车数据.

我的问题是我是否以及如何计算完成培训所需的时间,或者我如何监控培训的进度.谢谢.

python neural-network pybrain

9
推荐指数
1
解决办法
5328
查看次数

在python 3.2上安装pybrain

我正在尝试在python 3.2上安装pybrain.它在这里说:https://github.com/pybrain/pybrain/pull/85它应该工作.但它不适合我.

我试过了:

$出口PYTHONPATH = $ PYTHONPATH: '/家庭/路易斯/文档/ pybrain /' https://github.com/pybrain/pybrain/pull/85

适用于python 2.7.

有人让它上班吗?

python-3.x pybrain

9
推荐指数
2
解决办法
5478
查看次数

使用pybrain进行神经网络回归

我需要解决前馈网络的回归问题,并且我一直在尝试使用PyBrain来完成它.由于没有关于pybrain参考的回归的例子,我试图改编它的回归分类示例,但没有成功(分类示例可以在这里找到:http://pybrain.org/docs/tutorial/fnn.html).以下是我的代码:

第一个函数将我的数据以numpy数组形式转换为pybrain SupervisedDataset.我使用SupervisedDataset,因为根据pybrain的参考,它是在问题回归时使用的数据集.参数是一个包含特征向量(数据)及其预期输出(值)的数组:

def convertDataNeuralNetwork(data, values):

fulldata = SupervisedDataSet(data.shape[1], 1)

for d, v in zip(data, values):

    fulldata.addSample(d, v)    

return fulldata
Run Code Online (Sandbox Code Playgroud)

接下来,是运行回归的功能.train_data和train_values是列车特征向量及其预期输出,test_data和test_values是测试特征向量及其预期输出:

regressionTrain = convertDataNeuralNetwork(train_data, train_values)

regressionTest = convertDataNeuralNetwork(test_data, test_values)

fnn = FeedForwardNetwork()

inLayer = LinearLayer(regressionTrain.indim)
hiddenLayer = LinearLayer(5)
outLayer = GaussianLayer(regressionTrain.outdim)

fnn.addInputModule(inLayer)
fnn.addModule(hiddenLayer)
fnn.addOutputModule(outLayer)

in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)

fnn.addConnection(in_to_hidden)
fnn.addConnection(hidden_to_out)

fnn.sortModules()

trainer = BackpropTrainer(fnn, dataset=regressionTrain, momentum=0.1, verbose=True, weightdecay=0.01)

for i in range(10):

    trainer.trainEpochs(5)

    res = trainer.testOnClassData(dataset=regressionTest )

    print res
Run Code Online (Sandbox Code Playgroud)

当我打印res时,它的所有值都是0.我已经尝试使用buildNetwork函数作为构建网络的快捷方式,但它不能正常工作.我还在隐藏层中尝试了不同类型的层和不同数量的节点,没有运气.

有人知道我做错了什么吗?此外,一些pybrain回归示例真的会有所帮助!我看的时候找不到任何东西.

提前致谢

python regression machine-learning neural-network pybrain

9
推荐指数
2
解决办法
1万
查看次数

如何在PyBrain中加载训练数据?

我正在尝试使用PyBrain进行一些简单的NN训练.我不知道该怎么做是从文件加载训练数据.任何地方都没有在他们的网站上解释过.我不关心格式,因为我现在可以构建它,但我需要在文件中执行它,而不是手动逐行添加,因为我将有几百行.

python neural-network pybrain

8
推荐指数
1
解决办法
9677
查看次数