Моя нейросеть керас не предсказывает рукописные числа - PullRequest
0 голосов
/ 29 ноября 2018

Я обучил нейронную сеть прямой связи в модуле 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 ]

0 голосов
/ 29 ноября 2018

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

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

0 голосов
/ 29 ноября 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...