2

下面是我的神经网络代码,有 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

我的问题是,如果你想使用这个训练有素的神经网络根据特定的输入进行预测,你是怎么做的?

4

2 回答 2

4

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

net.activate((1,2,3))
于 2012-01-17T01:09:01.337 回答
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

. . .

于 2013-03-04T22:12:20.910 回答