开发者学堂课程【深度学习框架 TensorFlow 入门:二进制文件读取流程分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/773/detail/13554
二进制文件读取流程分析
内容介绍:
一、CIFAR10二进制数据集介绍
二、CIFAR10二进制数据读取
一、CIFAR10二进制数据集介绍
CIFAR-10数据集
CIFAR-10数据集由10个类的60000个32*32彩色图像组成,每个类有6000个图像,有50000个训练图像和1000个测试图像。
数据集分为五个培训批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个班级的恰好1000个随机选择的图像。班级的图像比另一个更多。在他们之间,训练批次包含来自每个班级的正好5000张图像。
以下是数据集中的类,以及来自每个类的10个随机图像。
这些类完全互相排斥。汽车和卡车之间没有重叠。“汽车”包括轿车,SUV,这类东西。“卡车”之包括大卡车。都不包括皮卡车。
二进制版本数据文件
二进制版本包含文件 data_batch_1.bin,data_batch_2.bin,...,data_batch_5.bin 以及 test_batch.bin。这些文件中的每一个格式如下,数据中每个样本包含了特征值和目标值:
<1x标签><3072x像素>
...
<1x标签><3072x像素>
每3073个字节是一个样本
1个目标值+3072像素(1024字节红色通道1024绿色通道1024蓝色通道)
第一个字节是第一个图像的标签,它是一个0-9范围内的数字。接下来的3072个字节是图像像素的值。前1024个字节是红色通道值,下1024个绿色,最后1024个蓝色。
二、CIFAR10二进制数据读取
1、流程分析
1)构造文件队列
2)读取二进制数据并进行解码
reader = tf.FixedLengthRecordReader(3073)
key,value = reader.read(file_queue)
decoded = tf.decode_raw(value,tf.uint8)
* 对 tensor 对象进行切片
label
* 一个样本 image(3072字节 = 1024red + 1024green + 1024blue)
[[ red [32,32]],
[ green [32,32]],
[blue[32,32]]]
shape = (3,32,32) = ( channels , height , width )
==> TensorFlow 的图像表示习惯
图片的形状、类型调整完毕
3)处理图片数据形状以及数据类型,批处理返回
4)开启会话线程运行