【问题标题】:Pybrain: neural network for classification doesn't learnPybrain:用于分类的神经网络不会学习
【发布时间】:2015-08-04 10:54:10
【问题描述】:

我正在尝试使用 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 个错误(百分比和总错误)总是在相同的值附近;不管我改变什么。

谢谢

【问题讨论】:

  • 我查看了 'out' 内部的值,发现类 1 和 3 从来不在输出值之间。你有什么主意吗?谢谢

标签: python classification pybrain


【解决方案1】:

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

【讨论】:

  • 其实输出在0到1之间,因为是分类问题,我关联到4-1,关联到3-0.75等等。那你有什么建议呢?
  • 值“3”实际上是在“4”和“2”之间吗?还是这些恰好是数字的任意标签?如果是后者,那么四个不同的输出,每一个都是一个分类的是-否,可能会更好。
  • 我已经有 5 个二进制输出用于分类,正如他们在 pybrain 中建议的那样......
  • 那么,当您说您将 3 关联到 0.75 时,您是什么意思? “3”是一种输出类型,还是您的意思是 4 级中的 3 级?
  • 由于我不确定它是否适用于从 0 到 4 的类,我将所有输出向量除以 4,以使输出在 [0,1] 范围内;它其实并不重要。真正让我恼火的是总误差固定为 0.072,无论我改变什么。
猜你喜欢
  • 2014-11-08
  • 2013-04-22
  • 2016-07-11
  • 2016-10-08
  • 1970-01-01
  • 2019-03-15
  • 2011-08-17
  • 2020-10-29
  • 2019-09-13
相关资源
最近更新 更多