CIFAR-10与ImageNet图像识别

        这次的实验仍旧是图像识别,使用的数据集是CIFAR-10,其中包含10个类别的RGB彩色图片:飞机、汽车、鸟类、猫、鹿、狗、蛙类、马、船和卡车,其中训练图片共50000张,测试图片共10000张。实验来自于《21个项目玩转深度学习:基于TensorFlow的实践详解》一书中的实验,在这里做一篇学习笔记,笔者不才,欢迎斧正!

         项目文件如下:  。其中,

一、下载CIFAR-10数据

         运行cifar10_download.py代码,成功将数据集下载到目录中。

        可以看到数据集中数据文件名及用途:

二、Tensorflow的数据读取机制

读取数据集必须考虑的一个问题:GPU/CPU因为I/O而空闲的问题

        简单地将图片数据集从内存中读进CPU或GPU中进行计算,读取的时间便意味在降低内存的效率。为了解决这个问题,方法即将读入数据和计算分别放在两个线程中,先将数据读入内存队列中。读取线程负责读入数据到内存队列,另一个线程则负责计算,计算需要数据时直接从内存队列中取即可。

Tensorflow使用“文件名队列+内存队列”双队列的形式读入文件,更好的管理epoch。

        对于一个数据集来讲,运行一个epoch就是将这个数据集中的图片全部计算一遍。运行一个epoch,就在文件名队列中把A、B、C各放入一次,并在之后标注队列结束。

        程序运行后,内存先读取A,再依次读取B、C。

          

        由于系统检测到“结束”,则自动抛出异常,外部捕捉到这个异常后就可以结束程序了。这就是Tensorflow中读取数据的基本机制。如果要运行两个epoch,那么只要在文件名队列中将A、B、C依次放入两次再标记结束就可以了。

在Tensorflow中创建文件名队列和内存队列

        使用tf.train.st

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值