Pybrain:用于分类的神经网络无法学习

2024-06-25 22:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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个错误(进位和总误差)总是在相同的值附近;无论我做了什么改变。在

谢谢你


Tags: netasdsdatasetclass误差endtestdata
1条回答
网友
1楼 · 发布于 2024-06-25 22:32:17

对PyBrain不是很熟悉,但是,你确定输出可以小于0吗?例如,如果将输出限制在0和1之间,则可能永远无法非常接近正确的答案。在

相关问题 更多 >