Neural network Pybrain对任何输入输出相同的结果

Neural network Pybrain对任何输入输出相同的结果,neural-network,pybrain,Neural Network,Pybrain,我正在尝试用Pybrain训练一个简单的神经网络。培训后,我想确认nn是否按预期工作,因此我激活了用于培训的相同数据然而,每次激活都会产生相同的结果。我是误解了神经网络的基本概念,还是出于设计 我尝试过改变隐藏节点的数量、隐藏类类型、偏差、学习率、训练次数和动量,但都没有效果 这是我的密码 from pybrain.tools.shortcuts import buildNetwork from pybrain.datasets i

我正在尝试用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])  

我有一个类似的问题,我能够通过执行以下操作来提高准确性(即每个输入得到不同的答案)

  • 对神经网络的输入和输出进行规范化/标准化

    • 这样做可以使神经网络更准确地确定网络的内部权重和值,以便预测答案

    • 这里有一篇文章更详细地解释了这一点


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

    你是否对节点之间的初始突触强度进行了随机化?使用net.randomize?我已经试过了,但为了以防万一,我又加了回去,同样的问题还在发生。我已经更新了我的代码示例来反映这一点。为了使ANN正常工作,它的突触必须在生成时随机化。当它们都具有相同的强度时,最后一层上的每个神经元都会得到相同的输出,所以我真的,真的认为是这样。最后,我解决了这个问题,将数据标准化在0和1之间,并进行训练,直到错误率达到0.00001。训练需要更长的时间,但我现在确实得到了准确的结果。代码还存在问题。如果错误<0.001,只需将显示
    的位更改为
    如果错误<0.00001
    。我还必须对数据进行预规范化,以便所有数字都在0到1之间。
    [ 75.99893007]
    [ 75.99893007]
    [ 75.99893007]