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

时间:2015-05-22 12:08:06

标签: python classification pybrain

我正在尝试使用pybrain对5个类别(从0到4)中的一些输入(由44个变量组成,范围从-1到+1)进行分类,但我将总误差固定为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个错误(百分比和总错误)总是在相同的值附近;无论我改变什么。

谢谢

1 个答案:

答案 0 :(得分:0)

不熟悉PyBrain但是,你确定输出能够小于0吗?例如,如果输出被约束在0和1之间,它可能永远无法接近正确的答案。

相关问题