2016-06-17 12 views
-3
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]Pybrain - 신경망 정확도가 매우 낮습니다.

+0

는 "레이블은 다음과 같이 (trndata.indim, 10, trndata.outdim는, 바이어스 = 사실은, = SoftmaxLayer 급에 속하다) : [0, 0, 0, ..., 1,1, 1]" ? 배열의 각 요소가 레이블이기 때문에 단일 차원 레이블을 가지고 있다는 것을 의미합니까? – Andnp

+0

레이블은 단일 차원 목록이지만 내 레이블을 다음과 같이 2 차원 목록으로 변환하는 "trndata._convertToOneOfMany()"를 사용합니다 : [(1,0), (1,0) ......] (0,1), (0, 1)]이다. 궁극적으로 목표는 2 차원입니다. – jack

답변

0

죄송합니다. 바이어스 용어를 추가 한 후 정확도는 꽤 좋아.

FNN = buildNetwork

관련 문제