【问题标题】:How do you make a prediction (forecast) from a trained network for a given input?您如何从经过训练的网络对给定输入进行预测(预测)?
【发布时间】:2012-01-16 23:46:03
【问题描述】:

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

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

【问题讨论】:

    标签: python neural-network pybrain


    【解决方案1】:

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

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

    【讨论】:

    • 老实说,我不得不查看他们的文档一段时间,然后才明白这一点。这真是令人沮丧。
    • 谢谢。但是,如果我对相同的特定 3 个输入执行两次特定代码,我会得到相同的结果吗?为什么不呢?
    • 我不确定我是否理解。如果您多次运行相同的输入,您应该大多数 时间得到相同的结果,但不是所有时间。您是希望 100% 的时间获得相同的结果,还是希望结果更频繁地变化?无论哪种方式,这都取决于您如何训练网络。
    【解决方案2】:

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

    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

    。 . .

    【讨论】:

      猜你喜欢
      • 2019-01-28
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 2021-03-15
      • 2017-08-14
      • 1970-01-01
      相关资源
      最近更新 更多