2016-09-05 2 views
1

Я пытаюсь сделать предсказания, используя обученную сверточную нейронную сеть, слегка измененную из примера в примере экспертного тензора тензорного потока. Я выполнил инструкции в https://www.tensorflow.org/versions/master/how_tos/reading_data/index.html для чтения данных из файла CSV.Tensorflow - Использование дозирования для прогнозирования

Я обучил модель и оценил ее точность. Затем я сохранил модель и загрузил ее в новый скрипт python для создания прогнозов. Могу ли я использовать метод дозирования, указанный в ссылке выше, или я должен использовать вместо этого 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 × batch_size' из прогнозируемых меток. Если кто-то видит что-то не так с этим решением или лучший способ сделать это, не стесняйтесь публиковать сообщения. – Eweler

ответ

0

ли использование tensorflow служить, чтобы сделать предсказания работать для вас?

+0

Да, насколько я могу судить. Но это быстро и не очень элегантно. – Eweler

Смежные вопросы