Моя нейросеть керас не предсказывает рукописные числа

Я обучил нейронную сеть прямой связи в модуле Keras, но с этим есть некоторые проблемы. Проблема заключается в неправильном прогнозировании изображений с самописными цифрами.

(X_train, y_train), (X_test, y_test) = mnist.load_data()
RESHAPED = 784
X_train = X_train.reshape(60000, RESHAPED)
X_test = X_test.reshape(10000, RESHAPED)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
Y_train = np_utils.to_categorical(y_train, NB_CLASSES)
Y_test = np_utils.to_categorical(y_test, NB_CLASSES)
model = Sequential()
model.add(Dense(N_HIDDEN, input_shape=(RESHAPED,)))
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(N_HIDDEN))
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(NB_CLASSES))
model.add(Activation('softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
          optimizer=OPTIMIZER,
          metrics=['accuracy'])

history = model.fit(X_train, Y_train,
                batch_size=BATCH_SIZE, epochs=NB_EPOCH,
                verbose=VERBOSE, validation_split=VALIDATION_SPLIT)
score = model.evaluate(X_test, Y_test, verbose=VERBOSE) 
//output
....
Epoch 20/20
48000/48000 [==============================] - 2s 49us/step - loss: 0.0713 - 
acc: 0.9795 - val_loss: 0.1004 - val_acc: 0.9782
10000/10000 [==============================] - 1s 52us/step
Test score: 0.09572517980986121 
Test accuracy: 0.9781

Затем я загружаю свое изображение размером 28x28, которое было написано самостоятельно, например - 2, и выполняло этот скрипт:

img_array = imageio.imread('2.png', as_gray=True)
predictions=model.predict(img_array.reshape(1,784))
print (np.argmax(predictions))
//output for example 3, but I expect - 2

Я пробовал другие картинки с разными номерами, которые также давали неправильные прогнозы. Что случилось? Модель показывает-Тест точности: 0,9781. Помоги мне, пожалуйста)))

2 ответа

Вы используете набор данных MNIST. Этот набор изначально был создан для американского почтового отделения. Вам придется иметь дело с региональными вариациями почерка, поэтому убедитесь, что вы написали американские цифры.

С другой стороны ошибки нормальны. Сделайте больший набор рукописных цифр и сделайте несколько тестов.

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

https://medium.com/@o.kroeger/tensorflow-mnist-and-your-own-handwritten-digits-4d1cd32bbab4

Другие вопросы по тегам