我有一个问题,涉及使用pybrain进行时间序列的回归.我计划在pybrain中使用LSTM层来训练和预测时间序列.
我在下面的链接中找到了示例代码
在上面的示例中,网络能够在训练后预测序列.但问题是,网络通过将其一次性输入到输入层来接收所有顺序数据.例如,如果训练数据各有10个特征,则10个特征将同时被馈送到10个输入节点.
根据我的理解,这不再是时间序列预测我是对的吗?由于每个功能被馈入网络的时间没有区别?如果我错了,请纠正我.
因此,我想要实现的是一个只有一个输入节点和一个输出节点的循环网络.输入节点是在不同时间步骤顺序馈送所有时间序列数据的地方.将训练网络以在输出节点处再现输入.
您能否建议或指导我构建我提到的网络?非常感谢你提前.
我正在使用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)
我尝试过的方法是:
我决定尝试使用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中.
最后我设法从一个文件训练一个网络:)现在我想打印节点和权重,特别是权重,因为我想用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])
很难说是什么,至少在重量连接哪些节点.这就是我所需要的一切.
我正在尝试使用神经网络解决这个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
描述
给定具有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) 我无法让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) 我有一个神经网络n pybrain,有两个输入,一个隐藏层和一个输出层.我使用以下内容进行训练:
trainer = BackpropTrainer(net,ds)
trainer.trainUntilConvergence()
Run Code Online (Sandbox Code Playgroud)
net是神经网络,ds是列车数据.
我的问题是我是否以及如何计算完成培训所需的时间,或者我如何监控培训的进度.谢谢.
我正在尝试在python 3.2上安装pybrain.它在这里说:https://github.com/pybrain/pybrain/pull/85它应该工作.但它不适合我.
我试过了:
$出口PYTHONPATH = $ PYTHONPATH: '/家庭/路易斯/文档/ pybrain /' https://github.com/pybrain/pybrain/pull/85
适用于python 2.7.
有人让它上班吗?
我需要解决前馈网络的回归问题,并且我一直在尝试使用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回归示例真的会有所帮助!我看的时候找不到任何东西.
提前致谢
我正在尝试使用PyBrain进行一些简单的NN训练.我不知道该怎么做是从文件加载训练数据.任何地方都没有在他们的网站上解释过.我不关心格式,因为我现在可以构建它,但我需要在文件中执行它,而不是手动逐行添加,因为我将有几百行.
pybrain ×10
python ×7
prediction ×2
time-series ×2
data-mining ×1
dbn ×1
python-3.x ×1
regression ×1
statistics ×1