tensorflow编程一些需要知道的 - 3


做训练时,我们往往要处理大批量的数据,这时如果有个可以异步读取的方式,那么处理程序会更加灵活和高效。FIFOQueue 、RandomShuffleQueue 便是tensorflow提供的一些通过队列来做异步数据存取的方法,并且它是多线程的(tf.Session对象就是多线程的)。这个框架如下图




由于整个程序是多线程的,因此我们可以在同一个session里并行跑多个ops。为此,tf一共了tf.Coordinator 和 tf.QueueRunner来帮助我们编写这样的程序,使得我们可以方便地处理多个线程的启动、停止、异常捕获等。Coordinator类让我们的多个线程同时停止、把异常抛给调用的地方。QueueRunner类针对enqueue ops创建多个线程,而这些线程可以通过Coordinator类来同时停止,并当有异常发生时通过一个关闭线程来自动关闭这些线程。下面是一个对上述的示例

import tensorflow as tf

example = ...ops to create one example...
#Step 1. 为输入构建一个queue,并将这些输入enqueue进去
queue = tf.RandomShuffleQueue(...)
enqueue_op = queue.enqueue(example)

#Step 2. 从queue里dequeue样本进行训练 
inputs = queue.dequeue_many(batch_size)
train_op = ...use 'inputs' to build the training part of the graph...

#Note: 以上可以通过tf.train.string_input_producer来完成

#Step 3. 通过4个线程来并发enqueue_op样本
qr = tf.train.QueueRunner(queue, [enqueue_op] * 4)

# Launch the graph.
sess = tf.Session()
#构建Coordinator, 启动QueueRunner
coord = tf.train.Coordinator()
enqueue_threads = qr.create_threads(sess, coord=coord, start=True)
# 跑训练迭代。这些线程除了跑enqueue_op, 而且捕获并处理异常, 通过coordinator来在主循环中处理。
try:
    for step in xrange(1000000):
        if coord.should_stop():
            break
        sess.run(train_op)
except Exception, e:
    # 将异常抛给coordinator,通知线程停止
    coord.request_stop(e)
finally:
    coord.request_stop()
    coord.join(enqueue_threads)





  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Faster R-CNN是一种经典的深度学习目标检测模型,由RPN(Region Proposal Network)和Fast R-CNN两部分组成。通过使用RPN网络,模型可以在目标检测前自动生产多个预选框,从而降低计算复杂度和提高模型的表现。本文主要介绍如何使用TensorFlow2构建Faster R-CNN模型,并在COCO数据集上进行训练和测试。 首先,在搭建Faster R-CNN模型前,需要安装必要的库和环境。包括TensorFlow2、NumPy、Pillow等。接着,下载COCO数据集并进行数据预处理。使用COCO API将图像数据和标注文件解析成可读取的格式,并进行数据增强,包括随机水平翻转、改变亮度和对比度等。 然后,是Faster R-CNN的网络结构。首先搭建RPN网络,通过一个基础网络(如VGG16或Resnet50)提取图像特征,将特征图传入RPN网络,生成多个预选框。接着,将预选框传入Fast R-CNN网络,通过ROI pooling将ROI区域转换为统一尺寸的特征图,最终输出目标类别和位置信息。 接下来,是模型的训练。定义损失函数,包括分类损失和回归损失,并使用优化器进行模型的迭代。同时,使用学习率调度和正则化等技术提高模型的表现,并进行批量归一化处理,加快收敛速度。 最后,进行模型的测试。使用COCO评测指标计算模型的AP值和mAP值,并对模型的结果进行可视化展示,包括预测框、真实框和标注信息等。 总体来说,使用TensorFlow2实现Faster R-CNN目标检测模型是一个复杂而有挑战性的任务,需要掌握深度学习和计算机视觉相关的知识和技术,同时还需要具备较强的编程能力和实战经验。但是,通过不断学习和实践,可以逐步提升模型的表现和应用价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值