2
嘿,我需要一些幫助,我的pybrain代碼。一切正常,但訓練後第一次訓練錯誤不會下降。事實上,它恰好停留在13.3484055174處。我已經多次檢查我的代碼並將其與其他示例進行比較,但我始終得到同樣的問題。我也已經嘗試改變隱藏單位的數量,學習速度,勢頭,重量減輕到無濟於事。我檢查了參數,它從[-1到1]開始,然後吹到〜240-250。我想知道是否有人能看到它爲什麼不起作用。我相信這是一個非常簡單的單線程,我錯過了。Pybrain前饋神經網絡訓練錯誤完全卡住
我正在研究kaggle 0-9數字分類數據集。我已經得到了隨機森林的工作,但我真的想讓這個神經網絡工作。任何幫助將不勝感激。
#learn digit classification with a nerual network
import pybrain
from pybrain.datasets import *
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.modules import SoftmaxLayer
from pybrain.utilities import percentError
import numpy
print "Importing training and test data"
data = numpy.genfromtxt('trainR.csv', delimiter = ',')
data = data[1:]
traindata = data[:(len(data)/2)]
testdata = data[(len(data)/2)+1:]
print "Importing actual data"
actualdata = numpy.genfromtxt('trainR.csv', delimiter = ',')
print "Adding samples to dataset and setting up neural network"
ds = ClassificationDataSet(784, 10, nb_classes = 10)
for x in traindata:
ds.addSample(tuple(x[1:]),tuple(x[0:1]))
ds._convertToOneOfMany(bounds=[0,1])
net = buildNetwork(784, 100, 10, bias=True, outclass=SoftmaxLayer)
print "Training the neural network"
trainer = BackpropTrainer(net, dataset=ds, momentum = 0.1,
verbose = True, weightdecay = 0.01)
for i in range(3):
# train the network for 1 epoch
trainer.trainEpochs(1)
# evaluate the result on the training and test data
trnresult = percentError(trainer.testOnClassData(), [x[0] for x in traindata])
# print the result
print "epoch: " + str(trainer.totalepochs) + " train error: " + str(trnresult)
print ""
print "Predicting with the neural network"
answerlist = []
for row in testdata:
answer = numpy.argmax(net.activate(row[1:]))
answerlist.append(answer)
tstresult = percentError(answerlist, [x[0] for x in testdata])
print "Test error: " + str(tstresult)