2017-12-06 2 views
0

MNIST For ML Beginners에 대한 기본 예제를 살펴 보았고 MNIST 데이터베이스에서 간단한 숫자 분류자를 만들었습니다.MNIST에서 생성 된 Tensorflow 모델에 대한 베개 이미지 테스트 중입니까?

자습서 코드는 mnist_softmax.py이지만 자체 테스트 이미지에 대해 분류자를 사용합니다. 베개에서로드 된 내 이미지로 시도하고 싶습니다. 여기

내가 수정 한 부분이다 :

from PIL import Image 

    # Test trained model 
    img = Image.open("09.png").convert('L') 
    data = np.ndarray.flatten(np.array(img)) 
    result = sess.run(tf.argmax(y,1), feed_dict={x: [data]}) 
    print (' '.join(map(str,result))) 

그러나이 오류 : 내가 사용

ValueError: Cannot feed value of shape (1, 1568) for Tensor u'Placeholder:0', which has shape '(?, 784)' 

이미지는 28x28입니다 :

enter image description here

enter image description here

으로 914으로 각각 지정하십시오.

기계 학습이라는 주제로 몇 가지 자습서를 읽기 시작한 이래로 분류 프로그램이 어떻게 작동하는지 오해 할 수도 있습니다. 제 질문은 어떻게 이러한 이미지를 베개에서 분류 자로로드하고 분류 자에서 올바른 자릿수를 결정하도록 할 수 있습니까?


편집 : 는 @의 샤샤의 의견을 바탕으로, 내가 코드를 업데이트했지만 잘못된 결과를 얻고있다.

enter image description here

을하지만 지금 결과는 7 또는 3 중 하나입니다 : 나는 9 이미지를 청소했습니다.

+2

** 힌트 ** :'''2352 = 28 * 28 * 3'''. 어떻게 든 RGB와 같이 3 채널을 사용하고 있습니다. 강제 BW 또는 그레이 스케일 (1 비트 대 8 비트) 1 채널 읽기. – sascha

+0

@ sascha 힌트를 보내 주셔서 감사합니다. 저는 베개의'convert ('LA')'를 사용하여 회색 음영으로 변환했습니다. 이제'(1, 1568)'에 대한 오류가 나타납니다. 이 변경 사항을 반영하도록 질문을 수정했습니다. – tempomax

+0

@sascha 죄송합니다. 다시 엉망이되었습니다. 내가 가져야 할 때 알파를 추가했습니다.이를 제거하면 출력이 나오지만 '9'는 '7'로 출력됩니다. 보다 정확한 방법이 있습니까? – tempomax

답변

0

이미지를 1 채널로 변환하여 모양이 일치하지 않는다는 것을 알았습니다. 이제 문제는 테스트 예측이 잘못되었다는 것입니다. 그래서 이것은 당신의 ML 모델이 그 테스트 케이스에 실패했다는 것을 설명합니다.

항상 열차와 테스트 정확도를 계산하여 모델 성능을 분석하고 모델이 직면 한 문제를 파악하십시오.

그래서 모델을 개선 할 수있는 방법에 대한 해결책을 찾으십시오. 길쌈 신경망을 사용하여 레이어 수를 늘리거나 합치는 등

this 링크를 확인하십시오. 여기서는 99.45의 정확도를 갖는 숫자 인식을위한 간단한 CNN 모델을 작성했습니다.

Kaggle의 다른 커널을 참조하여 같은 문제에 대한 다른 접근 방법에 대해 자세히 알아보십시오.

희망이 도움이됩니다.

관련 문제