张量流保存/恢复队列



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

这就是我定义图形和排队/取消排队的方式:

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')

解决了,您只需在保存的图形中添加排队操作即可。

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

相关内容

  • 没有找到相关文章

最新更新