tensorflow mini batch 训练中线程和队列数据输入的问题

tensorflow mini batch 训练中线程和队列数据输入的问题

实际学习和使用tensorflow的时候,面临大数据量训练的场景,几乎很少使用Session.run中的feed_dict来批量导入数据。tensorflow利用多线程和队列方法异步实现大批量数据的输入,大大节省了数据输入引起的资源浪费。大致的流程如下:

  1. 先创建一个“先入先出”的队列(FIFOQueue)
  2. 创建enqueue方法和dequeue对象:
    enqueue_operation = queue.enqueue
    inputs = queue.dequeue
  3. 利用inputs对象作为神经网络图的输入构建神经网络
  4. 创建cord=tf.train.Coordinator()管理多线程同步
  5. 启动队列工作tf.train.start_queue_runners(sess=sess, coord=cord)
  6. 启动线程写入队列start_threads(sess=sess, coord=coord, n_threads=8)
  7. session.run(),启动训练,这时候是不用通过feed_dict来喂数据的,最关键的理解是第3步,我曾经在运行代码的时候一直不理解,因为enqueue是可以很容易设置断点监控到了,但dequeue方法却没看到,所以痛苦了一段时间。最后单步跟,看到input的提示是这样一个tensor(Tensor(“fifo_queue_Dequeue:0”, dtype=float32, device=/device:GPU:0)),算是想通了这一点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值