且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

二进制文件读取流程分析|学习笔记

更新时间:2022-09-02 16:13:40

开发者学堂课程【深度学习框架 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)开启会话线程运行