tensorflow保存/恢复队列

时间:2018-07-10 12:54:43

标签: python tensorflow queue

当从队列中馈送图形时,如何使用保存的图形进行预测?

这是定义图和入队/出队的方法:

X_placeholder = tf.placeholder(tf.int32, [None, FLAGS.max_words], name="X_placeholder")
Y_placeholder = tf.placeholder(tf.int32, [None, output_classes], name="Y_placeholder")
q = tf.FIFOQueue(capacity=1000, dtypes=[tf.int32, tf.int32])
enqueue_op = q.enqueue_many([X_placeholder, Y_placeholder], name="enque_op")
X, Y = q.dequeue()
.......

这是我进行入队和培训的方式:

with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(coord=coord)

        sess.run(enqueue_op, feed_dict={X_placeholder: X_array, Y_placeholder: Y_array})
        for i in range(100):
            sess.run(optimize, feed_dict=feed)

        coord.request_stop()
        coord.join(threads)

这就是我保存图表的方式:

saver = tf.train.Saver()
saver.save(sess, checkpoint_path)
gd = sess.graph.as_graph_def()
converted_graph_def = graph_util.convert_variables_to_constants(sess, gd, ["prediction"])
tf.train.write_graph(converted_graph_def, FLAGS.export_dir, 'model' + s + '.pb', as_text=False)

导入此图后如何运行入队操作?

我尝试恢复队列张量,但无法对其调用“ q.enqueue_many”。

q = graph.get_tensor_by_name('queue/fifo_queue:0')

1 个答案:

答案 0 :(得分:0)

解决了这个问题,您只需在保存的图形中添加入队操作即可。

converted_graph_def = graph_util.convert_variables_to_constants(sess, gd, ["prediction", "enqueue_op"])