Я рассмотрел базовый пример на MNIST для начинающих ML, и они создали простой классификатор цифр из базы данных MNIST, что довольно круто.
У них есть код руководства: mnist_softmax. py, но они используют классификатор для собственных тестовых изображений. Я хочу попробовать это на своем собственном изображении, загруженном из Pillow.
Вот часть, которую я изменил:
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:
Как 9
и 14
соответственно.
Возможно, я неправильно понимаю, как работает классификатор, поскольку я только начал читать несколько руководств по машинному обучению. Мой вопрос в том, как я могу загрузить эти изображения из Pillow в классификатор, чтобы классификатор определил правильные цифры?
EDIT: Основываясь на комментариях @sascha, я обновил код, но получаю неправильные результаты. Я попытался очистить изображение 9
:
Но теперь результат либо 7
, либо 3
.
2352=28*28*3
. Вы каким-то образом используете 3 канала (как в RGB). Force BW или Grayscale (1 бит против, например, 8 бит) 1-канальное чтение. - person sascha   schedule 06.12.2017convert('LA')
Pillow, и теперь я получаю сообщение об ошибке(1, 1568)
. Я изменил свой вопрос, чтобы отразить это изменение. - person tempomax   schedule 07.12.20179
выходит как7
. Есть ли способ сделать его более точным? - person tempomax   schedule 07.12.20179
— это либо белые пиксели, либо черные пиксели. Но запуск программы теперь выводит7
или3
. Я также добавил свое очищенное изображение в свой пост, если это поможет. - person tempomax   schedule 07.12.2017