2016-08-26 2 views
0

형상 (채널 수, 높이, 너비) = (3, 30, 30)을 사용하여 길쌈 신경망 (this one)을 실행하고 있습니다.). 나는 76960 개의 훈련 견본, 19240 개의 견본 견본을 가지고 있으며, 39 개의 수업이 있습니다.Keras 길쌈 신경망 유효성 검사 정확도가 변경되지 않음

# Train the model using Stochastic grad descent + momentum 
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) 
cnn.compile(loss='categorical_crossentropy', 
      optimizer=sgd, 
      metrics=['accuracy']) 


batch_size = 128 
nb_epoch = 50 

cnn.fit(x_train, y_train, 
     batch_size = batch_size, 
     nb_epoch = nb_epoch, 
     validation_data=(x_test, y_test), 
     shuffle=True) 

훈련 손실과 신 (新) 시대에 걸쳐 정확성 변화하지만, (0.3387에서 0.3357까지) 2 시대에 1 일부터 변경 사항 만 확인 정확성, 다음은 0.3357 전혀 유지 : 코드의 마지막 몇 블록은 그 길.

다양한 배치 크기 (32, 128 또는 256), learning rate (1e-6에서 0.1까지, 길을 따라 10을 곱함)을 시도했으며 data normalization과 함께 또는 시도하지 않았습니다 (기본 평균 이동 및 나누기 에 의해 sd). 이들 중 어느 것도 효과가 없습니다.

+0

다른 분류자를 테스트합니까? 그렇다면 다른 분류 기준에 따라 얻을 수있는 최고의 정확도는 무엇입니까? – Masoud

+0

수업은 어떻게 균형을 이루고 있습니까? 다른 클래스보다 많은 샘플을 가진 클래스? –

+0

1. 예, 다른 분류 기준을 시도했습니다. 2. 아니요, 수업 중 2 개가 심각하게 과도하게 표현되어 전체 인구의 약 34 %와 35 %를 차지합니다. 그러나 내 질문은 "방법 X에서 내 데이터를 정확하게 분류하는 방법"이 아니라는 점에 유의하십시오. 나는 주어진 레이블이 정확하다는 것을 확신하지 못하기 때문에 분류 실패는 여전히 현실을 반영하는 정확한 결과 일 수 있습니다. 기술 오류가 걱정됩니다. – AndreyIto

답변

0

당신이 붙잡고있는 정확도 (33.5 %)가 지배적 인 클래스에 속하는 예제의 비율과 동일하다는 것은 우연이 아닙니다 ("34 %"라고 말했음 - 거의 확실하게 33.5 %).

귀하의 이미지 데이터를 정규화하지 않았습니다.. 픽셀 값이 1에서 255 사이이면 모델이 항상 같은 클래스를 예측할 수 있습니다. 이 문제가 발생하는 것을 확인하려면 model.predict(x_train)을 사용하고 모델에서 예측하는 것을 확인하십시오. 정확히 균일하고, 항상 데이터의 34 %를 차지하는 클래스라고 확신합니다.

이 문제를 해결하려면 데이터를 정규화하십시오. x_train을 255로 나누어 모델을 학습하십시오.

x_train = x_train/255.0 
관련 문제