2017-12-16 2 views
1

Ich bin neu in Tensorflow. Ich habeWie kann ich mein Mnist trainiertes Modell verwenden, um ein Bild vorherzusagen

durch dieses Beispiel MNIST Ausbildung getan
steps = 5000 

with tf.Session() as sess: 

    sess.run(init) 

    for i in range(steps): 

     batch_x , batch_y = mnist.train.next_batch(50) 

     sess.run(train,feed_dict={x:batch_x,y_true:batch_y,hold_prob:0.5}) 

     # PRINT OUT A MESSAGE EVERY 100 STEPS 
     if i%100 == 0: 

      print('Currently on step {}'.format(i)) 
      print('Accuracy is:') 
      # Test the Train Model 
      matches = tf.equal(tf.argmax(y_pred,1),tf.argmax(y_true,1)) 

      acc = tf.reduce_mean(tf.cast(matches,tf.float32)) 

      print(sess.run(acc,feed_dict= 
       {x:mnist.test.images,y_true:mnist.test.labels,hold_prob:1.0})) 
      print('\n') 

ich jetzt Vorhersage dieses Modell machen wollen. Ich öffne und verarbeite das Bild mit diesen Codezeilen.

image = cv2.imread("Untitled.jpg") 
image = np.multiply(image, 1.0/255.0) 
images=tf.reshape(image,[-1,28,28,1]) 

wenn ich dies:

feed_dict1 = {x: images} 
    classification = sess.run(y_pred, feed_dict1) 
    print (classification) 

Es diesen Fehler zurückgibt.

TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles. 
+0

Haben Sie versucht, numpy umzuformen? –

+0

Ich habe das versucht. –

+0

Ich hatte das gleiche Problem, und das feed_dict erwartet ein einfaches Array von Eingabe- und Ausgabewerten. Also für mein 1 dimensionales Netzwerk, das nur den gleichen Wert ausgibt, den Sie ihm zuführen: 'inputs = [[0], [0.5], [1]]' 'outputs = [[0], [0.5], [1]] ' ' feed_dict = {inputType: Eingaben, outputType: outputs} ' tf.reshape gibt einen Tensor zurück –

Antwort

0

Sie versuchen, das tf-Objekt in den Platzhalter zu füttern:

images = tf.reshape(image,[-1,28,28,1]) 

aber man kann das nicht tun, da Platzhalter erwartet Zahl zum Beispiel np.array. Verwenden Sie daher numpy.reshape anstelle von tf.reshape. Zweitens können Sie innerhalb Ihrer Sitzung verwenden. Zum Beispiel können Sie flache Arrays in einen Platzhalter einfügen und dann innerhalb Ihrer Sitzung einen Knoten erstellen, der dieses Array in eine 2D-Matrix umformt.

Verwandte Themen