5

我正在尝试用 Pybrain 训练一个简单的神经网络。训练后,我想确认 nn 是否按预期工作,因此我激活了用于训练它的相同数据。但是,每次激活都会输出相同的结果。我是否误解了有关神经网络的基本概念,或者这是设计使然?

我尝试改变隐藏节点的数量、隐藏类类型、偏差、学习率、训练时期的数量和动量,但无济于事。

这是我的代码...

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

net = buildNetwork(2, 3, 1)  
net.randomize()                                                    

ds = SupervisedDataSet(2, 1)                                                       
ds.addSample([77, 78], 77)                                                         
ds.addSample([78, 76], 76)                                                         
ds.addSample([76, 76], 75)                                                         

trainer = BackpropTrainer(net, ds)                                                 
for epoch in range(0, 1000):                                                                   
    error = trainer.train()                                                                    
    if error < 0.001:                                                                          
        break                                                      

print net.activate([77, 78])                                                       
print net.activate([78, 76])                                                       
print net.activate([76, 76])  

这是结果的一个示例......正如您所看到的,即使激活输入不同,输出也是相同的。

[ 75.99893007]
[ 75.99893007]
[ 75.99893007]
4

2 回答 2

4

我遇到了类似的问题,通过执行以下操作,我能够提高准确性(IE 为每个输入获得不同的答案)。

  1. 对神经网络的输入和输出进行归一化/标准化

于 2015-03-24T16:19:46.823 回答
2

最后,我通过将 0 和 1 之间的数据归一化并训练直到错误率达到 0.00001 来解决这个问题。训练需要更长的时间,但我现在确实得到了准确的结果。

于 2015-05-21T04:56:24.590 回答