2

나는 몇 개의 클래스에 속하는 이미지의 확률을 예측하기 위해 ANN을 훈련하려고하는데, 목표 값은 그러한 확률의 집합입니다.PyBrain multiple targets values ​​

입력은 0-255의 픽셀 값을 갖는 단순한 재구성 된 28x28 회색조 그림입니다.

하나의 '대상'은 다음과 같습니다 0.738832,0.238159,0.023009,0,0.238159,0,0.238159,0,0.238159,0,0,0.238159,0,0.19793,0.80207,0.066806667,0.663691308,0.008334764,0,0,0.0494825,0.098965,0.0494825,0,0,0,0,0,0,0,0,0,0,0,0,0,0 내가 얻는 결과는 다음과 같이 (단순 선형 회귀보다 훨씬 더) 끔찍한하고 보이는 그러나

: 0.011947,0.448668,0,0,0.095688,0,0.038233,0,0,0,0,0,0,0,0.405464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

그것은 정말 문제를 않습니다 300 또는 30000 사진을 사용하는 경우 나는 분명히 뭔가 잘못하고 있고 정말로 조언을 해주고 있습니다.

코드 :

# create dataset 
DS = SupervisedDataSet(784, 37) 
assert(ia.shape[0] == ta.shape[0]) 
DS.setField('input', ia) 
DS.setField('target', ta) 

fnn = buildNetwork(DS.indim, 200, 37, outclass=SoftmaxLayer) 

trainer = BackpropTrainer(fnn, dataset=DS, momentum=0.1, verbose=True, weightdecay=0.01) 
trainer.trainUntilConvergence(maxEpochs=10,verbose=True,validationProportion=0.20) 
+0

GalaxyZoo 경연 대회에 행운을 비네. – Firestrand

답변

1

귀하의 문제는 당신이 훈련을 위해 사용되는 값이다. A softmax 레이어는 해당 레이어의 모든 값이 하나가되도록 합니다. 따라서 37 개의 출력 치수를 설정하면 37 개의 치수 모두 1.0이됩니다. 샘플 타겟이 해당 배포를 따르지 않는 것으로 보입니다.

+0

고맙습니다. 3 개의 첫 번째 값은 1로 합산되므로, 나는 그것들에 대해서만 체크를했고 결과는 훨씬 더 좋습니다. 그러나 단일 네트워크를 사용하여 모든 값을 예측할 수있는 방법이 있는지 궁금합니다. – user2207055

+0

pybrain에서는 여러 softmax 출력 레이어를 설정하고 교육하는 방법을 알지 못합니다. 동일한 방식으로 제한되지 않는 다른 유형의 출력 레이어를 사용할 수 있습니다. – Firestrand