2016-09-05 5 views
1

예를 들어 expert tensorflow 자습서의 예에서 약간 수정 된 숙련 된 길쌈 신경망을 사용하여 예측을 시도하고 있습니다. 나는 https://www.tensorflow.org/versions/master/how_tos/reading_data/index.html에있는 지침에 따라 CSV 파일에서 데이터를 읽었습니다.Tensorflow - 일괄 처리를 사용하여 예측하기

나는 모델을 훈련시키고 그 정확성을 평가했다. 그런 다음 모델을 저장하고 예측을 만들기 위해 새로운 파이썬 스크립트에로드했습니다. 위의 링크에 설명 된 일괄 처리 방법을 계속 사용할 수 있습니까? 아니면 feed_dict을 사용해야합니까? 온라인에서 본 대부분의 자습서는 후자를 사용합니다.

내 코드는 아래에 나와 있습니다. 본질적으로 단일 .csv 파일 내에 줄로 저장된 교육 데이터에서 코드를 복사했습니다. Conv_nn은 단순히 전문가 MNIST 자습서에 설명 된 길쌈 신경망을 포함하는 클래스입니다. 대부분의 콘텐츠는 그래프를 실행하는 부분을 제외하고는별로 유용하지 않을 것입니다.

필자는 훈련 및 예측이 몹시 혼란 스럽다고 생각합니다. 테스트 이미지가 예측 작업에 올바르게 공급되는지 또는 두 데이터 세트에 대해 동일한 일괄 작업을 사용하는 것이 올바른지 확실하지 않습니다.

filename_queue = tf.train.string_input_producer(["data/test.csv"],num_epochs=None) 

reader = tf.TextLineReader() 
key, value = reader.read(filename_queue) 

# Defaults force key value and label to int, all others to float. 
record_defaults = [[1]]+[[46]]+[[1.0] for i in range(436)] 
# Reads in a single row from the CSV and outputs a list of scalars. 
csv_list = tf.decode_csv(value, record_defaults=record_defaults) 
# Packs the different columns into separate feature tensors. 
location = tf.pack(csv_list[2:4]) 
bbox = tf.pack(csv_list[5:8]) 
pix_feats = tf.pack(csv_list[9:]) 
onehot = tf.one_hot(csv_list[1], depth=98) 
keep_prob = 0.5 


# Creates batches of images and labels. 
image_batch, label_batch = tf.train.shuffle_batch(
    [pix_feats, onehot], 
    batch_size=50,num_threads=4,capacity=50000,min_after_dequeue=10000) 

# Creates a graph of variables and operation nodes. 
nn = Conv_nn(x=image_batch,keep_prob=keep_prob,pixels=33*13,outputs=98) 

# Launch the default graph. 
with tf.Session() as sess: 
    sess.run(tf.initialize_all_variables()) 
    saver.restore(sess, 'model1.ckpt') 
    print("Model restored.") 

    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(sess=sess,coord=coord) 

    prediction=tf.argmax(nn.y_conv,1) 

    pred = sess.run([prediction]) 

    coord.request_stop() 
    coord.join(threads) 
+0

나는 (모호한) 해결책을 발견했다. 'tf.train.shuffle_batch'를'tf.train.batch'로 변경하고'batch_size'를 예측하려는 데이터 세트의 크기로 설정하십시오. 이것은 예측 라벨의'1 x batch_size' numpy 배열을 제공합니다. 누군가이 솔루션이나 더 나은 방법을 잘못 본다면 언제든지 게시 해 주시기 바랍니다. – Eweler

답변

0

예상치 못한 효과를 내기 위해 텐톨 플로우를 사용합니까?

+0

예, 제가 말할 수있는 한. 그러나 그것은 빠르고 우아하지 않습니다. – Eweler

관련 문제