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