【问题标题】:Pybrain - Neural Network Accuracy is very lowPybrain - 神经网络精度非常低
【发布时间】:2016-10-19 06:49:48
【问题描述】:
i=0
noofclasses = 2
alldata = ClassificationDataSet(400, 1, noofclasses)
while i<len(data):
    alldata.addSample(data[i],labels[i])
    i=i+1
tstdata_temp, trndata_temp = alldata.splitWithProportion( 10 )

tstdata = ClassificationDataSet(400, 1, noofclasses) 
for n in xrange(0, tstdata_temp.getLength()):
    tstdata.addSample( tstdata_temp.getSample(n)[0], tstdata_temp.getSample(n)[1] ) 

trndata = ClassificationDataSet(400, 1, noofclasses) 

for n in xrange(0, trndata_temp.getLength()): 
    trndata.addSample( trndata_temp.getSample(n)[0], trndata_temp.getSample(n)[1] ) 

trndata._convertToOneOfMany( )
tstdata._convertToOneOfMany( )

fnn = buildNetwork( trndata.indim, 10, trndata.outdim, outclass=SoftmaxLayer )
trainer = BackpropTrainer( fnn, dataset=trndata, momentum=0.1, verbose=True, weightdecay=0.01)
trainer.trainEpochs( 20 )

我已经尝试增加 Epoch 的数量和隐藏神经元的数量。但准确性仍然没有提高。 “数据”是 400 维(20x20 图像的像素值),标签如下所示: [0,0,0,....1,1,1]

【问题讨论】:

  • "标签看起来像这样:[0,0,0,...,1,1,1]" ?你的意思是你有单维标签,所以你数组中的每个元素都是一个标签?
  • 标签是一维列表,但我使用的是“trndata._convertToOneOfMany()”,它将我的标签转换为二维列表,如下所示:[(1,0),(1,0 )......(0,1),(0,1)]。所以最终我的目标是二维的。

标签: python neural-network pybrain


【解决方案1】:

sorry, 添加bias term后,Accuracy还是不错的。

fnn = buildNetwork(trndata.indim, 10, trndata.outdim,bias = True, outclass=SoftmaxLayer)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-22
    • 2018-07-14
    • 2018-07-07
    • 2018-07-06
    • 2020-04-04
    • 1970-01-01
    • 2023-03-29
    • 2017-07-23
    相关资源
    最近更新 更多