当从队列中馈送图形时,如何使用保存的图形进行预测?
这是定义图和入队/出队的方法:
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')
答案 0 :(得分:0)
解决了这个问题,您只需在保存的图形中添加入队操作即可。
converted_graph_def = graph_util.convert_variables_to_constants(sess, gd, ["prediction", "enqueue_op"])