TensorFlow学习——CIFAR-10(一)

本文学习参考视频:http://v.youku.com/v_show/id_XMjY4MjYzNzUwNA==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2

CIFAR-10官网: http://www.cs.toronto.edu/~kriz/cifar.html

TensorFlow处理二进制数据格式流程:

读取数据,数据不能一次读进内存中,需要生成相同大小的批次(batch),将batch feed进TensorFlow的计算图中,进而训练,验证;



CIFAR-10数据集(多伦多大学,二进制格式存放)

Training Images: 50000彩色图片(32*32),共10类(飞机,汽车,鸟,猫,鹿,狗,蛙,马,船,卡车);

Testing Images: 10000图

每个二进制长度固定,一张图的二进制表述如下(图像类别字节+RGB图片像素字节):



CIFAR-10官网供三种数据格式下载(Python,MATLAB,二进制)

Python格式数据需要cPickle库支持load,但此种方式下载,会将数据一次性放入内存中,本次学习目的假设不能一次性将大量数据放入内存,因此选择二进制文件格式;

官网表述如下:

Python / Matlab versions

I will describe the layout of the Python version of the dataset. The layout of the Matlab version is identical. 

The archive contains the files data_batch_1data_batch_2, ..., data_batch_5, as well as test_batch. Each of these files is a Python "pickled" object produced with cPickle. Here is a python2 routine which will open such a file and return a dictionary:

def unpickle(file):
    import cPickle
    with open(file, 'rb') as fo:
        dict = cPickle.load(fo)
    return dict
And a python3 version:
def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict

Binary version
The binary version contains the files  data_batch_1.bin data_batch_2.bin , ...,  data_batch_5.bin , as well as  test_batch.bin . Each of these files is formatted as follows:
<1 x label><3072 x pixel>
...
<1 x label><3072 x pixel>
In other words, the first byte is the label of the first image, which is a number in the range 0-9. The next 3072 bytes are the values of the pixels of the image. The first 1024 bytes are the red channel values, the next 1024 the green, and the final 1024 the blue. The values are stored in row-major order, so the first 32 bytes are the red channel values of the first row of the image. 

下载数据说明(二进制格式文件):

存放目录:D:\cat_VS_dog\TensorFlow-DataSets\CIFAR-10\cifar-10-batches-bin


5个bin文件为训练集,将50000张图片压缩成5个bin文件(每个10000张);

测试图片集:test_batch.bin

batches.meta.txt:对训练集内容类别做了解释;


如何读数据及解码:


用tf.train.string_input_producer() 制作输入数据的队列;

用tf.FixedLengthRecordReader()读固定长度的数据格式(3073长度);

用tf.decode_raw()解码二进制格式文件;

解码后,将第一个元素提取给label,后面的3072长度reshape图片尺寸32*32;

返回上句提到的参数;


下一篇介绍代码实现





### 回答1: tensorflow cifar-10-batches-py是一个经典的深度学习数据集,被广泛用于图像分类任务的训练和评估。 该数据集是CIFAR-10数据集的Python版本,提供了10个类别的60000个32x32彩色图像。其中,50000张图像作为训练集,10000张图像作为测试集。 这个数据集是用Python编写的,并且使用了pickle库来加载和处理数据。它可以通过执行"import cifar10"来导入,并使用"cifar10.load_data()"来加载其数据。 加载数据后,可以使用TensorFlow来构建一个图像分类模型。TensorFlow是一个开源的深度学习框架,可以用于构建、训练和评估机器学习模型。 使用tensorflow cifar-10-batches-py数据集,可以进行图像分类任务的实验和研究。可以结合卷积神经网络等深度学习模型,对图像进行特征提取和分类。 在训练模型时,可以使用训练集进行权重更新和优化,然后使用测试集来评估模型的性能。 总结来说,tensorflow cifar-10-batches-py是一个常用的深度学习数据集,可以用于图像分类任务的研究和实验。它结合了TensorFlow框架,提供了加载、处理和评估数据的功能。通过使用它,可以建立一个自定义的图像分类模型,并对其进行训练和评估。 ### 回答2: tensorflow cifar-10-batches-py是一个用于在tensorflow框架中处理CIFAR-10数据集的Python脚本。CIFAR-10数据集是一个广泛应用于图像分类的数据集,包含10个不同类别的影像数据,每个类别有6000个32x32大小的彩色图像。 这个Python脚本通过提供一些函数和类来加载CIFAR-10数据集,并且将图像和标签进行预处理,以便于在训练和测试模型时使用。脚本中的函数可以帮助我们将原始的二进制数据转换成可用于训练的张量形式。 该脚本提供的函数可以将CIFAR-10数据集分为训练集和测试集,并提供了一个函数用于获取下一个训练批或测试批的图像和标签。此外,该脚本还提供了一个函数用于显示CIFAR-10数据集中的图像。 使用tensorflow cifar-10-batches-py脚本,我们可以很方便地加载和预处理CIFAR-10数据集,并用于训练和测试图像分类模型。这个脚本是使用Python编写的,可以在tensorflow环境中直接使用。 ### 回答3: TensorFlowcifar-10-batches-py是一个用于训练和验证图像分类模型的数据集。它是基于CIFAR-10数据集的一个版本,其中包含50000张用于训练的图像和10000张用于验证的图像。 CIFAR-10数据集是一个常用的图像分类数据集,包含10个不同的类别,每个类别有大约6000张图像。这些类别包括:飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车。每个图像的大小为32x32像素,是彩色图像。 cifar-10-batches-py数据集通过Python脚本cifar10.py提供,它将数据集分为5个训练批次和1个验证批次。在训练过程中,可以使用这些批次中的图像进行训练,并根据验证数据集的结果来评估模型的性能。 这个数据集提供了一个方便的方式来测试和评估不同的图像分类算法和模型。使用TensorFlowcifar10.py脚本可以加载这个数据集,并提供一些函数,用于解析和处理图像数据。 在使用cifar-10-batches-py数据集进行训练时,通常会将图像数据进行预处理,例如将像素值进行归一化处理,以便于模型的训练。同时,还可以使用数据增强的技术,如随机翻转、旋转或裁剪图像,以增加数据的多样性。 总的来说,TensorFlowcifar-10-batches-py数据集是为了方便机器学习研究人员进行图像分类模型训练和验证而提供的一个常用数据集。它可以用于测试和评估不同的图像分类算法和模型的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值