TensorFlow 中的 CIFAR-10 和 CIFAR-100 数据集

2025年3月17日 | 阅读 7 分钟

CIFAR-10(加拿大高级研究所) 和 CIFAR-100 是8000 万张微小图像数据集的标记子集。它们由Alex Krizhevsky、Geoffrey Hinton 和 Vinod Nair收集。数据集分为五个训练批次和仅一个测试批次,每个批次包含10000张图像。

测试批次包含从每个类别中随机选择的1000张图像。训练批次包含剩余的图像,顺序是随机的,但有些训练批次包含来自一个类别比来自另一个类别更多的图像。总的来说,训练批次包含每个类别正好 5000 张图像。

CIFAR-10 and CIFAR-100 Dataset in TensorFlow

这些类别将完全互斥。汽车和卡车之间将不会有重叠。汽车包括类似于轿车和 SUV 的东西。卡车类别仅包括大型卡车,并且不包括皮卡车。如果我们浏览 CIFAR 数据集,我们会意识到这不仅仅是一种鸟或猫。鸟类和猫类包含许多不同种类的鸟类和猫。鸟类和猫类提供了许多不同种类的鸟类和猫,它们在大小、颜色、放大倍数、不同角度和不同姿势方面有所不同。

有了无尽的数据集,我们可以用很多方法来写数字一和数字二。它根本没有那么多样化,而且最重要的是,无尽的数据集是一个灰度标量。CIFAR 数据集由 32 个较大尺寸的 32 彩色图像组成,每张照片都有三个不同的颜色通道。现在,我们最重要的一个问题是,在无尽的数据集上表现如此出色的 LeNet 模型是否足以对 CIFAR 数据集进行分类?

CIFAR-100 数据集

它就像 CIFAR-10 数据集一样。唯一的区别是它有 100 个类别,每个类别包含 600 张图像。每个类别中有 100 张测试图像和 500 张训练图像。这 100 个类别被分组为 20 个超级类别,并且每张图像都带有“粗略”标签(它所属的超级类别)和“精细”标签(它所属的类别)和“精细”标签(它所属的类别)。

CIFAR-100 数据集中的以下类别

序号超级类别
1.花卉兰花、罂粟花、玫瑰、向日葵、郁金香
2.鱼类水族馆鱼、比目鱼、鳐鱼、鲨鱼、鳟鱼
3.水生哺乳动物海狸、海豚、水獭、海豹、鲸鱼
4.食品容器瓶子、碗、罐头、杯子、盘子
5.家用电器时钟、灯、电话、电视、电脑键盘
6.水果和蔬菜苹果、蘑菇、橙子、梨、甜椒
7.家用家具桌子、椅子、沙发、衣柜、床
8.昆虫 蜜蜂、甲虫、蝴蝶、毛虫、蟑螂
9.大型自然户外场景云、森林、山脉、平原、海洋
10.大型人造户外事物桥梁、城堡、房屋、道路、摩天大楼
11.大型食肉动物熊、豹、狮子、老虎、狼
12.中型哺乳动物狐狸、豪猪、负鼠、浣熊、臭鼬
13.大型杂食动物和食草动物骆驼、牛、黑猩猩、大象、袋鼠
14.非昆虫无脊椎动物螃蟹、龙虾、蜗牛、蜘蛛、蠕虫
15.爬行动物鳄鱼、恐龙、蜥蜴、蛇、乌龟
16.树木枫树、橡树、棕榈树、松树、柳树
17.人物女孩、男人、女人、婴儿、男孩
18.小型哺乳动物仓鼠、兔子、老鼠、鼩鼱、松鼠
19.车辆 1自行车、公共汽车、摩托车、皮卡车、火车
20.车辆 2割草机、火箭、电车、拖拉机、坦克

用例:借助卷积神经网络使用 TensorFlow 实现 CIFAR10

现在,训练一个网络,使用内置的TensorFlow的卷积神经网络对来自CIFAR10数据集的图像进行分类。

CIFAR-10 and CIFAR-100 Dataset in TensorFlow

考虑以下流程图以了解用例的工作原理

Img

安装必要的软件包

训练网络

输出

Epoch: 60/60

Global step: 23070 - [>-----------------------------]   0% - acc: 0.9531 - loss: 1.5081 - 7045.4 sample/sec
Global step: 23080 - [>-----------------------------]   3% - acc: 0.9453 - loss: 1.5159 - 7147.6 sample/sec
Global step: 23090 - [=>----------------------------]   5% - acc: 0.9844 - loss: 1.4764 - 7154.6 sample/sec
Global step: 23100 - [==>---------------------------]   8% - acc: 0.9297 - loss: 1.5307 - 7104.4 sample/sec
Global step: 23110 - [==>---------------------------]  10% - acc: 0.9141 - loss: 1.5462 - 7091.4 sample/sec
Global step: 23120 - [===>--------------------------]  13% - acc: 0.9297 - loss: 1.5314 - 7162.9 sample/sec
Global step: 23130 - [====>-------------------------]  15% - acc: 0.9297 - loss: 1.5307 - 7174.8 sample/sec
Global step: 23140 - [=====>------------------------]  18% - acc: 0.9375 - loss: 1.5231 - 7140.0 sample/sec
Global step: 23150 - [=====>------------------------]  20% - acc: 0.9297 - loss: 1.5301 - 7152.8 sample/sec
Global step: 23160 - [======>-----------------------]  23% - acc: 0.9531 - loss: 1.5080 - 7112.3 sample/sec
Global step: 23170 - [=======>----------------------]  26% - acc: 0.9609 - loss: 1.5000 - 7154.0 sample/sec
Global step: 23180 - [========>---------------------]  28% - acc: 0.9531 - loss: 1.5074 - 6862.2 sample/sec
Global step: 23190 - [========>---------------------]  31% - acc: 0.9609 - loss: 1.4993 - 7134.5 sample/sec
Global step: 23200 - [=========>--------------------]  33% - acc: 0.9609 - loss: 1.4995 - 7166.0 sample/sec
Global step: 23210 - [==========>-------------------]  36% - acc: 0.9375 - loss: 1.5231 - 7116.7 sample/sec
Global step: 23220 - [===========>------------------]  38% - acc: 0.9453 - loss: 1.5153 - 7134.1 sample/sec
Global step: 23230 - [===========>------------------]  41% - acc: 0.9375 - loss: 1.5233 - 7074.5 sample/sec
Global step: 23240 - [============>-----------------]  43% - acc: 0.9219 - loss: 1.5387 - 7176.9 sample/sec
Global step: 23250 - [=============>----------------]  46% - acc: 0.8828 - loss: 1.5769 - 7144.1 sample/sec
Global step: 23260 - [==============>---------------]  49% - acc: 0.9219 - loss: 1.5383 - 7059.7 sample/sec
Global step: 23270 - [==============>---------------]  51% - acc: 0.8984 - loss: 1.5618 - 6638.6 sample/sec
Global step: 23280 - [===============>--------------]  54% - acc: 0.9453 - loss: 1.5151 - 7035.7 sample/sec
Global step: 23290 - [================>-------------]  56% - acc: 0.9609 - loss: 1.4996 - 7129.0 sample/sec
Global step: 23300 - [=================>------------]  59% - acc: 0.9609 - loss: 1.4997 - 7075.4 sample/sec
Global step: 23310 - [=================>------------]  61% - acc: 0.8750 - loss:1.5842 - 7117.8 sample/sec
Global step: 23320 - [==================>-----------]  64% - acc: 0.9141 - loss:1.5463 - 7157.2 sample/sec
Global step: 23330 - [===================>----------]  66% - acc: 0.9062 - loss: 1.5549 - 7169.3 sample/sec
Global step: 23340 - [====================>---------]  69% - acc: 0.9219 - loss: 1.5389 - 7164.4 sample/sec
Global step: 23350 - [====================>---------]  72% - acc: 0.9609 - loss: 1.5002 - 7135.4 sample/sec
Global step: 23360 - [=====================>--------]  74% - acc: 0.9766 - loss: 1.4842 - 7124.2 sample/sec
Global step: 23370 - [======================>-------]  77% - acc: 0.9375 - loss: 1.5231 - 7168.5 sample/sec
Global step: 23380 - [======================>-------]  79% - acc: 0.8906 - loss: 1.5695 - 7175.2 sample/sec
Global step: 23390 - [=======================>------]  82% - acc: 0.9375 - loss: 1.5225 - 7132.1 sample/sec
Global step: 23400 - [========================>-----]  84% - acc: 0.9844 - loss: 1.4768 - 7100.1 sample/sec
Global step: 23410 - [=========================>----]  87% - acc: 0.9766 - loss: 1.4840 - 7172.0 sample/sec
Global step: 23420 - [==========================>---]  90% - acc: 0.9062 - loss: 1.5542 - 7122.1 sample/sec
Global step: 23430 - [==========================>---]  92% - acc: 0.9297 - loss: 1.5313 - 7145.3 sample/sec
Global step: 23440 - [===========================>--]  95% - acc: 0.9297 - loss: 1.5301 - 7133.3 sample/sec
Global step: 23450 - [============================>-]  97% - acc: 0.9375 - loss: 1.5231 - 7135.7 sample/sec
Global step: 23460 - [=============================>] 100% - acc: 0.9250 - loss: 1.5362 - 10297.5 sample/sec

Epoch 60 - accuracy: 78.81% (7881/10000)
This epoch receive better accuracy: 78.81 > 78.78. Saving session...
##################################################################################################

在测试数据集上运行网络

简单输出

Trying to restore last checkpoint ...
Restored checkpoint from: ./tensorboard/cifar-10-v1.0.0/-23460

Accuracy on Test-Set: 78.81% (7881 / 10000)

CIFAR-10 and CIFAR-100 Dataset in TensorFlow

训练时间

在这里,我们看到训练 60 个 epoch 需要多少时间

设备批次时间准确度[%]
英伟达1288m4s79.12
英特尔 i77700HQ1283h30m78.91

下一主题RNN 介绍