簡體   English   中英

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)) - 數組([570.34849909])。

我不明白如何解決它。 我嘗試了不同的學習方式,隱藏層中不同數量的神經元以及不同時期。

我找到了解決問題的辦法。 在訓練之前必須對數據進行標准化。 這大大提高了培訓的有效性。 最后代碼:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM