我正在尝试用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]
答案 0 :(得分:4)
我有类似的问题,通过执行以下操作,我能够提高准确度(I.E.为每个输入获得不同的答案)。
规范化/标准化输入和输出到神经网络
这样做可以让神经网络更准确地确定网络的内部权重和值,以便预测答案
这是一篇更详细解释它的文章。 http://visualstudiomagazine.com/articles/2014/01/01/how-to-standardize-data-for-neural-networks.aspx
答案 1 :(得分:2)
最后,我通过归一化0到1之间的数据来解决这个问题,并进行训练直到错误率达到0.00001。训练需要更长的时间,但我现在确实得到了准确的结果。