imagenes - tensorflow python español
Hacer predicciones con un modelo TensorFlow (3)
Seguí los tutoriales mnist dados y pude entrenar un modelo y evaluar su precisión. Sin embargo, los tutoriales no muestran cómo hacer predicciones dado un modelo. No estoy interesado en la precisión, solo quiero usar el modelo para predecir un nuevo ejemplo y en la salida ver todos los resultados (etiquetas), cada uno con su puntaje asignado (ordenado o no).
Como sugirió @dga, debe ejecutar su nueva instancia de datos a través de su modelo ya predicho.
Aquí hay un ejemplo:
Suponga que realizó el primer tutorial y calculó la precisión de su modelo (el modelo es este:
y = tf.nn.softmax(tf.matmul(x, W) + b)
).
Ahora toma su modelo y le aplica el nuevo punto de datos.
En el siguiente código calculo el vector, obteniendo la posición del valor máximo.
Muestra la imagen e imprime esa posición máxima.
from matplotlib import pyplot as plt
from random import randint
num = randint(0, mnist.test.images.shape[0])
img = mnist.test.images[num]
classification = sess.run(tf.argmax(y, 1), feed_dict={x: [img]})
plt.imshow(img.reshape(28, 28), cmap=plt.cm.binary)
plt.show()
print ''NN predicted'', classification[0]
En el ejemplo " Deep MNIST for Experts ", vea esta línea:
Ahora podemos implementar nuestro modelo de regresión. ¡Solo se necesita una línea! Multiplicamos las imágenes de entrada vectorizadas x por la matriz de peso W, sumamos el sesgo b y calculamos las probabilidades de softmax que se asignan a cada clase.
y = tf.nn.softmax(tf.matmul(x,W) + b)
Simplemente presione el nodo y y obtendrá lo que desea.
feed_dict = {x: [your_image]}
classification = tf.run(y, feed_dict)
print classification
Esto se aplica a casi cualquier modelo que cree: habrá calculado las probabilidades de predicción como uno de los últimos pasos antes de calcular la pérdida.
La pregunta es específicamente sobre el tutorial Google MNIST , que define un predictor pero no lo aplica. Utilizando la guía de la publicación del blog TensorFlow Estimator de Jonathan Hui , aquí hay un código que se ajusta exactamente al tutorial de Google y hace predicciones:
from matplotlib import pyplot as plt
images = mnist.test.images[0:10]
predict_input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x":images},
num_epochs=1,
shuffle=False)
mnist_classifier.predict(input_fn=predict_input_fn)
for image,p in zip(images,mnist_classifier.predict(input_fn=predict_input_fn)):
print(np.argmax(p[''probabilities'']))
plt.imshow(image.reshape(28, 28), cmap=plt.cm.binary)
plt.show()