2016-10-21 6 views
6

मैं एक ऐसी स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो मुझे एक अंक की छवि खींचने की अनुमति दे और फिर यह निर्धारित करे कि एमएनआईएसटी पर प्रशिक्षित मॉडल के साथ यह कितना अंक है।टेन्सफोर्लो - मेरी खुद की छवियों के साथ एक एमनिस्ट तंत्रिका नेट का परीक्षण

यहाँ मेरी कोड है:

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))) 

किसी कारण से परिणाम हमेशा गलत हैं लेकिन जब मैं मानक परीक्षण विधि का प्रयोग कर एक 92% सटीकता है।

मुझे लगता है कि समस्या हो सकती है कि कैसे मैं छवि इनकोडिंग: वे इसे कैसे किया

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

मैं the next_batch() function के लिए tensorflow कोड में देख कोशिश को देखने के लिए, लेकिन मैं पता नहीं है मैं कैसे के खिलाफ तुलना कर सकते हैं मेरे दृष्टिकोण।

समस्या कहीं और भी हो सकती है।

80 +% सटीकता बनाने में कोई मदद की सराहना की जाएगी।

+1

छवि एन्कोडिंग के लिए, .png का उपयोग करने का प्रयास करें। मेरे परीक्षणों से, .jpg प्रारूप तब तक खराब है जब तक यह छवि पर कलाकृतियों (ग्रे पिक्सेल) छोड़ देता है। – Link

उत्तर

6

मैं अपनी गलती पाया: यह रिवर्स इनकोडिंग, अश्वेतों 255 के बजाय 0.

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

यह तय कर रहे थे।

+0

धन्यवाद, यह सहायक था। –

+0

क्या आप छवि का उपयोग किए गए आयामों का उल्लेख कर सकते हैं? – Pre

+1

@Pre यहां [छवियों में से एक है जिसके खिलाफ मैंने परीक्षण किया] [https://github.com/cloutier/tf/blob/master/im_01.jpg) –

संबंधित मुद्दे

 संबंधित मुद्दे