Tensorflow – Probando una neural network mnist con mis propias imágenes

Estoy tratando de escribir un guión que me permita dibujar una imagen de un dígito y luego determinar qué dígito es con un modelo entrenado en MNIST.

Aquí está mi código:

import random import image from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf import numpy as np import scipy.ndimage mnist = input_data.read_data_sets( "MNIST_data/", one_hot=True ) x = tf.placeholder(tf.float32, [None, 784]) W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) y = tf.nn.softmax(tf.matmul(x, W) + b) y_ = tf.placeholder(tf.float32, [None, 10]) cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) train_step = tf.train.GradientDescentOptimizer(0.5).minimize (cross_entropy) init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) for i in range( 1000 ): batch_xs, batch_ys = mnist.train.next_batch( 1000 ) sess.run(train_step, feed_dict= {x: batch_xs, y_: batch_ys}) print ("done with training") data = np.ndarray.flatten(scipy.ndimage.imread("im_01.jpg", flatten=True)) result = sess.run(tf.argmax(y,1), feed_dict={x: [data]}) print (' '.join(map(str, result))) 

Por alguna razón, los resultados siempre son incorrectos, pero tengo una precisión del 92% cuando uso el método de prueba estándar.

Creo que el problema podría ser cómo codifiqué la imagen:

 data = np.ndarray.flatten(scipy.ndimage.imread("im_01.jpg", flatten=True)) 

Intenté buscar en el código tensorflow la función next_batch () para ver cómo lo hicieron, pero no tengo idea de cómo compararlos con mi enfoque.

El problema podría estar en otro lugar también.

Cualquier ayuda para hacer la precisión de 80 +% sería muy apreciada.

Encontré mi error: codificó lo contrario, los negros estaban en 255 en lugar de 0.

  data = np.vectorize(lambda x: 255 - x)(np.ndarray.flatten(scipy.ndimage.imread("im_01.jpg", flatten=True))) 

Arreglado.