本文主要是介绍tensorflow笔记 协调器tf.train.Coordinator,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原理
TensorFlow中有两个函数管理Session中的多线程:Coordinator和 QueueRunner。
同一个Session中可以创建多个线程,但所有线程必须能被同步终止,异常必须能被正确捕获并报告。当会话终止的时候, 队列必须能被正确地关闭。
Coordinator用来管理在Session中的多个线程,可以用来同时停止多个工作线程,同时报告异常,当程序捕捉到这个异常后之后就会终止所有线程。
QueueRunner用来启动tensor的入队线程,可以启动多个工作线程将多个tensor推送入文件名称队列中。 只有运行 tf.train.start_queue_runners 后,才会真正把tensor推入内存序列中,供计算单元调用,否则数据流图会处于一直等待状态。
图片来自Reference[2]
示例
产生测试数据的方法请参考 tensorflow笔记 tfrecord创建及读取
import tensorflow as tf# k = 1时可以看到Coordinator在队列清空时抛出的异常
k = 0
# 偷懒用了之前的数据,格式: feature是一个1x5向量,label是0或1.tfrecord_path = 'data.record' def _parse_function(example_proto): # 解析函数dics = { 'sample': tf.FixedLenFeature([5], tf.int64), # 如果不是标量,一定要在这里说明数组的长度'label': tf.FixedLenFeature([]
这篇关于tensorflow笔记 协调器tf.train.Coordinator的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!