首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >tensorflow队列操作中线程的用途是什么?

tensorflow队列操作中线程的用途是什么?
EN

Stack Overflow用户
提问于 2018-02-10 22:06:14
回答 1查看 184关注 0票数 1
代码语言:javascript
代码运行次数:0
运行
复制
images, labels = tf.train.batch([image, label], batch_size=32, num_threads=4)

我经常看到一个用num_threads创建的队列,线程被认为是用于入队操作的。我不太理解为入队设置多个线程的目的,因为在我看来,入队只是将一个值放在队列的末尾。

EN

回答 1

Stack Overflow用户

发布于 2018-02-10 23:27:40

来自Threading and Queues tutorial

例如,典型的输入架构是使用RandomShuffleQueue来准备用于训练模型的输入:

  • 多线程准备训练示例并将其推送到队列中。
  • 训练线程执行将小批次从队列中出队的训练操作。

TensorFlow会话对象是多线程的,因此多个线程可以很容易地使用同一会话并并行运行操作。

这个想法是,数据管道通常是I/O密集型的:数据可以从磁盘获取,甚至可以从网络流式传输。GPU很有可能不会成为计算中的瓶颈,原因很简单,因为数据馈送的速度不够快,无法使其饱和。

多线程读取解决了这个问题:当一个线程正在等待I/O任务时,另一个线程已经有了一些GPU的数据。在处理此数据时,第一线程有望接收并准备其批处理,依此类推。这就是为什么tf.train.batchtf.train.shuffle_batch和其他函数支持多线程数据处理。设置num_threads = 1使批处理具有确定性,但如果有多个线程,则不能保证队列中数据的顺序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48721620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档