Прогнозирование одного наблюдения всегда показывает один и тот же класс - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь сделать OCR для персонажа Bangla. У меня 168 разных классов. Для предсказания каждого персонажа моя модель

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=(42,28,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

Это хорошо работает в моем тестовом наборе. Я пытаюсь предсказать один экземпляр, но для каждого отдельного экземпляра выводится один и тот же класс . Я читаю одно изображение следующим образом

from PIL import Image
#location for single image
location='Bangla-Compound-Character-Recognition/data/2/ka.jpg'

#image size = (42x28) grayscale
image=np.array(Image.open(location)).reshape(42,28,1)
image=np.expand_dims(image,axis=0)
single_image_cls=model.predict_classes(image)
print(single_image_cls)

Прогнозирование одного экземпляра тестового набора показывает правильный результат, а точность теста составляет 90%

#predicting a single test instance
probablity=model.predict_classes(x_test[100:101])

1 Ответ

0 голосов
/ 22 июня 2019

При тестировании новых изображений вы должны применить ту же нормализацию, что и обучающий набор, обычно деля пиксели изображения на 255:

single_image_cls=model.predict_classes(image / 255)
...