我试图用pybrain将一些输入(由44个变量组成,范围从-1到+1)分为5个类(从0到4),但是我有一个总误差被固定在0.072左右,即使我改变网络结构或减少输入向量中变量的数量。代码是:
InputT=TrainingINDF.ix[:End,:]
InputT=InputT.as_matrix()
TargetT=TrainingOUTDF.ix[:End,:]
TargetT=TargetT.as_matrix()
ds = Classificationdataset(44, 1, nb_classes=5)
for i in range (len(InputT)):
ds.addSample(InputT[i,:],TargetT[i])
testdata=ClassificationDataSet(44, 1, nb_classes=5)
for i in range (len(TrainingINDF.ix[StartTS:,:])):
testdata.addSample(TrainingINDF.ix[StartTS+i,:],TrainingOUTDF.ix[StartTS+i])
testdata._convertToOneOfMany()
ds._convertToOneOfMany()
net = buildNetwork(44,15,5,hiddenclass=TanhLayer, outclass=SoftmaxLayer)
trainer = BackpropTrainer(net,dataset=ds,momentum=0.1,verbose=True, weightdecay=0.01)
trnerr,valerr = trainer.trainUntilConvergence(dataset=ds,maxEpochs=100)
ris = net.activateOnDataset(testdata)
out=ris.argmax(axis=1)
percenterrortest=percentError(out, testdata['class'] )
print 'Percent Error on Test dataset: ' , percentError(trainer.testOnClassData (dataset=testdata ), testdata['class'] )
print 'Percent Error on Train dataset: ' , percentError(trainer.testOnClassData (dataset=ds ), ds['class'] )
试验百分误差为61.93,列车百分误差为60.50。 我做错什么了? 令我惊讶的是,这3个错误(进位和总误差)总是在相同的值附近;无论我做了什么改变。在
谢谢你
对PyBrain不是很熟悉,但是,你确定输出可以小于0吗?例如,如果将输出限制在0和1之间,则可能永远无法非常接近正确的答案。在
相关问题 更多 >
编程相关推荐