2017-03-23 1 views
1

나는 tensorflow를 배우려고 노력 중이므로 어떤 도움을 주시면 감사하겠습니다. 나는 tensorflow 웹 사이트에 게시 된 mnist 코드를 따랐다 : https://www.tensorflow.org/get_started/mnist/pros 모델은 99 %와 정확도로 달리고 훈련된다. 나는 번호 하나의 인터넷에서 png 이미지를 다운로드했다. 렛은 1.png라고 부른다. 이제이 이미지를 훈련 된 모델에 입력하여 이미지를 모델로 인식하는지 어떻게 결정합니까? 지금까지 보았던 YouTube 동영상이나 텐서 플로 페이지에는이 작업을 수행하는 방법이 설명되어 있지 않습니다. 이 이미지를 모델에서 확인하려면 무엇을 입력해야합니까? 훈련을받은 후에 단일 이미지를 모델로 전달하는 방법이 있어야합니다. 그렇지 않으면 훈련 된 모델의 무대에 도달 할 필요가 없습니다.Tensorflow - 훈련 후 내 자신의 이미지 파일을 사용하는 방법

from tensorflow.examples.tutorials.mnist import input_data 
mnist = input_data.read_data_sets('MNIST_data', one_hot=True) 

import tensorflow as tf 
sess = tf.InteractiveSession() 

x = tf.placeholder(tf.float32, shape=[None, 784]) 
y_ = tf.placeholder(tf.float32, shape=[None, 10]) 

W = tf.Variable(tf.zeros([784,10])) 
b = tf.Variable(tf.zeros([10])) 

sess.run(tf.global_variables_initializer()) 

writer = tf.summary.FileWriter('/tmp/mnistworking', graph=sess.graph) 


y = tf.matmul(x,W) + b 


cross_entropy = tf.reduce_mean(
    tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)) 

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) 

for _ in range(1000): 
    batch = mnist.train.next_batch(100) 
    train_step.run(feed_dict={x: batch[0], y_: batch[1]}) 

correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) 

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 

print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels})) 

def weight_variable(shape): 
    initial = tf.truncated_normal(shape, stddev=0.1) 
    return tf.Variable(initial) 

def bias_variable(shape): 
    initial = tf.constant(0.1, shape=shape) 
    return tf.Variable(initial) 

def conv2d(x, W): 
    return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') 

def max_pool_2x2(x): 
    return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], 
         strides=[1, 2, 2, 1], padding='SAME') 

W_conv1 = weight_variable([5, 5, 1, 32]) 
b_conv1 = bias_variable([32]) 

x_image = tf.reshape(x, [-1,28,28,1]) 

h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1) 
h_pool1 = max_pool_2x2(h_conv1) 

W_conv2 = weight_variable([5, 5, 32, 64]) 
b_conv2 = bias_variable([64]) 

h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2) 
h_pool2 = max_pool_2x2(h_conv2) 

W_fc1 = weight_variable([7 * 7 * 64, 1024]) 
b_fc1 = bias_variable([1024]) 

h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64]) 
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1) 

keep_prob = tf.placeholder(tf.float32) 
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob) 

W_fc2 = weight_variable([1024, 10]) 
b_fc2 = bias_variable([10]) 

y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2 

cross_entropy = tf.reduce_mean(
    tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv)) 
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) 
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1)) 
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 
sess.run(tf.global_variables_initializer()) 
for i in range(17000): 
    batch = mnist.train.next_batch(50) 
    if i%100 == 0: 
    train_accuracy = accuracy.eval(feed_dict={ 
     x:batch[0], y_: batch[1], keep_prob: 1.0}) 
    print("step %d, training accuracy %g"%(i, train_accuracy)) 
    train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5}) 

print("test accuracy %g"%accuracy.eval(feed_dict={ 
    x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0})) 

답변

2

당신은 다음을 수행해야합니다 :

  • 가 저장된 검사 점에서 모델을 복원 내가 사용하는 전체 코드합니다 (tensorflow 웹 사이트에 표시된 동일한 코드 인) 이하이다. 이것이 어떻게 달성 될 수있는 몇 가지 방법이 있습니다.
  • 디스크에서 테스트 이미지를 숫자가 작은 배열로로드하고 크기가 [1, 784]이되도록 벡터화하고 모양을 변경하십시오. 여기에 정의 된 입력 자리 표시 자 모양이므로 x = tf.placeholder(tf.float32, shape=[None, 784])입니다. 이 경우 None은 가변 배치 크기를 나타내므로 의도 한대로 테스트 시간에 하나의 데이터 포인트를 피드하는 것이 좋습니다.
  • 다음으로 모델이 작업을 수행하도록합니다 (예 : 예측 가능). 이를 위해 분류를 계산하는 노드를 가져와야합니다.이 노드는 게시 한 코드에 tf.argmax(y_conv, 1) 인 것 같습니다. 테스트 중에는 교육 단계를 수행하지 않기 때문에 레이블을 모델에 제공 할 필요가 없습니다. 또한

,이 튜토리얼은 당신을 위해 도움이 될 수있을 수 있습니다 : 답장을 보내 너무 감사 kaufmanu Tensorflow Mechanics 101

+0

. 매우 감사. –

관련 문제