PyBrain 中的预测数据

Prediction data in PyBrain

我根据可用数据进行预测。但他们错了。我不知道为什么。 我有代码创建和训练神经网络。

ds = SupervisedDataSet(3, 1)

ds.addSample( (76.7, 13.8, 103.0), (770,))
ds.addSample( (70.9, 13.0, 92.0), (650,))
ds.addSample( (65.6, 15.9, 104.3), (713,))
ds.addSample( (59.3, 14.8, 88.0), (593,))
ds.addSample( (50.0, 13.0, 65.2), (443,))
ds.addSample( (44.9, 17.6, 79.0), (547,))
ds.addSample( (44.3, 18.4, 78.6), (553,))
ds.addSample( (44.4, 18.4, 81.8), (576,))

net = buildNetwork(ds.indim, 5, ds.outdim, bias=True)

trainer = BackpropTrainer(net, dataset=ds, verbose=True,learningrate=0.05)
trainer.setData(ds)
trainer.trainEpochs(100)

但是当我写的时候

net.activate((76.7, 13.8, 103.0))

我得到了错误的结果数组([570.34849909])。当我更改输入值时,结果不会改变。例如,net.activate((76.7, 13.8, 90.0)) - array([ 570.34849909]).

我不知道如何修复它。我尝试了不同的学习方式,隐藏层中不同数量的神经元,以及不同数量的 epoch。

我找到了解决问题的方法。训练前必须对数据进行归一化。这大大提高了培训的有效性。最后代码:

ds = SupervisedDataSet(3, 1)
#not normalize data
ds.addSample( (76.7, 13.8, 103.0), 770)
ds.addSample( (70.9, 13.0, 92.0), 650)
ds.addSample( (65.6, 15.9, 104.3), 713)
ds.addSample( (59.3, 14.8, 88.0), 593)
ds.addSample( (50.0, 13.0, 65.2), 443)
ds.addSample( (44.9, 17.6, 79.0), 547)
ds.addSample( (44.3, 18.4, 78.6), 553)
ds.addSample( (44.4, 18.4, 81.8), 576)

#code for normalize data in ds
i = np.array([d[0] for d in ds])
i /= np.max(np.abs(i),axis=0)
o = np.array([d[1] for d in ds])
o /= np.max(np.abs(o),axis=0)

#creating new object for normalized data
nds = SupervisedDataSet(3, 1)
for ix in range(len(ds)):
    nds.addSample( i[ix], o[ix])

#creating net
net = buildNetwork(nds.indim, 3, nds.outdim, bias = True, hiddenclass=TanhLayer)

#training net
trainer = RPropMinusTrainer(net, verbose=True)
trainer.trainOnDataset(nds,100)
trainer.testOnData(verbose=True)