对于给定的输入,如何从训练有素的网络进行预测(预测)?

时间:2012-01-16 23:46:03

标签: python neural-network pybrain

下面是我的神经网络代码,有3个输入,1个隐藏层和1个输出:

#Data 
ds = SupervisedDataSet(3,1)

myfile = open('my_file.csv','r')

for data in tf.myfile ():
   indata =  tuple(data[:3])
   outdata = tuple(data[3])
   ds.addSample(indata,outdata)

net = FeedForwardNetwork() 
inp = LinearLayer(3) 
h1 = SigmoidLayer(1) 
outp = LinearLayer(1)

# add modules 
net.addOutputModule(outp) 
net.addInputModule(inp) 
net.addModule(h1)

# create connections 
net.addConnection(FullConnection(inp, h1))  
net.addConnection(FullConnection(h1, outp))

# finish up 
net.sortModules()

# initialize the backprop trainer and train 
trainer = BackpropTrainer(net, ds)
trainer.trainOnDataset(ds,1000) trainer.testOnData(verbose=True)

print 'Final weights:',net.params

我的问题是,如果您想使用这个经过训练的神经网络根据特定输入进行预测,您是如何做到的?

2 个答案:

答案 0 :(得分:4)

根据the documentation,您可以使用网络上的activate方法测试特定输入。假设您的输入看起来像(1 2 3),您的代码看起来像

net.activate((1,2,3))

答案 1 :(得分:0)

如果我理解正确,您的数据会有时间顺序。我做的预测工作是移动数据表,以便将下一个输出作为训练目标。 例如,如果您有这种数据:

  

w1 x1 y1 z1

     

w2 x2 y2 z2

     

w3 x3 y3 z3

     

w4 x4 y4 z4

     

。   。   

并且你想要预测z2,你构建一个像:

这样的表
  

w1 x1 y1 z1 | Z2

     

w2 x2 y2 z2 | Z3

     

w3 x3 y3 z3 | Z4

     

。   。   

然后,您将最后一列作为培训目标。 当然,你在桌子末尾丢了一行。

您还可以通过将步骤之间的差异作为附加输入来改善输出(为您提供动态效果:

  

w2 x2 y2 z2(w2-w1)(z2-z1)| Z3

     

w3 x3 y3 z3(w3-w2)(z3-z2)| Z4

     

。   。