python中关于CIFAR10数据集的使用
作者:晓亮. 发布时间:2021-04-14 22:08:05
关于CIFAR10数据集的使用
主要解决了如何把数据集与transforms结合在一起的问题。
CIFAR10的官方解释
torchvision.datasets.CIFAR10(
root: str,
train: bool = True,
transform: Optional[Callable] = None,
target_transform: Optional[Callable] = None,
download: bool = False)
注释:
root (string)
存在 cifar-10-batches-py 目录的数据集的根目录,如果下载设置为 True,则将保存到该目录。train (bool, optional)
如果为True,则从训练集创建数据集, 如果为False,从测试集创建数据集。transform (callable, optional)
它接受一个 PIL 图像并返回一个转换后的版本。 例如,transforms.RandomCrop/transforms.ToTensortarget_transform (callable, optional)
接收目标并对其进行转换的函数/转换。download (bool, optional)
如果为 true,则从 Internet 下载数据集并将其放在根目录中。 如果数据集已经下载,则不会再次下载。
实战操作
1.CIAFR10数据集的下载
代码如下:
import torchvision #导入torchvision这个类
train_set = torchvision.datasets.CIFAR10(root = "./dataset", train = True,
download= True) #从训练集创建数据集
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False,
download=True) #从测试集创建数据集
root = "./dataset",将下载的数据集保存在这个文件夹下;download= True,从 Internet 下载数据集并将其放在根目录中,这里就是在相对路径中,创建dataset文件夹,将数据集保存在dataset中。
2.查看下载的CIAFR10数据集
运行程序,开始下载数据集。下载成功后,可以进行一些查看。代码如下:
接着输入:
print(train_set[0]) #查看train_set训练集中的第一个数据
print(train_set.classes) #查看train_set训练集中有多少个类别
img, target = train_set[0]
print(img)
print(target)
print(train_set.classes[target])
img.show() #显示图片
输出结果:
(<PIL.Image.Image image mode=RGB size=32x32 at 0x161E924B8D0>, 6)
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship',
'truck']
<PIL.Image.Image image mode=RGB size=32x32 at 0x161E924B710>
6
frog
注释:可以看见,train_set数据集中有10个类别,train_set中第0个元素的target是6,也就是说,这个元素是属于第7个类别frog的。
3.数据转换
因为这些图片类型都是PIL Image,如果要供给pytorch使用的话,需要将数据全都转化成tensor类型。
完整代码如下:
import torchvision #导入torchvision这个类
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
dataset_transforms = transforms.ToTensor()
# dataset_transforms = torchvision.transforms.Compose([
# torchvision.transforms.ToTensor()
# ]) 第3 4 行代码可以用compose直接写
train_set = torchvision.datasets.CIFAR10(root = "./dataset", train = True, transform=dataset_transforms, download= True) #训练集
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False, transform=dataset_transforms, download=True) #测试集
writer = SummaryWriter("logs")
# print(train_set[0]) #查看train_set训练集中的第一个数据
# print(train_set.classes) #查看train_set训练集中有多少个类别
# img, target = train_set[0]
# print(img)
# print(target)
# print(train_set.classes[target])
# img.show()
for i in range(20):
img, target = train_set[i]
writer.add_image("cifar10_test2", img, i)
writer.close()
小结:CIFAR10数据集内存很小,只有100多m,下载方便。对我们学习数据集非常友好,练习的时候,我们可以使用SummaryWriter来将数据写入tensorboard中。
CIFAR-10 数据集简介
复现代码的过程中,简单了解了作者使用的数据集CIFAR-10 dataset ,简单记录一下。
CIFAR-10数据集是8000万微小图片的标签子集,它的收集者是:Alex Krizhevsky, Vinod Nair, Geoffrey Hinton。
数据集由6万张32*32的彩色图片组成,一共有10个类别。每个类别6000张图片。其中有5万张训练图片及1万张测试图片。
数据集被划分为5个训练块和1个测试块,每个块1万张图片。
测试块包含了1000张从每个类别中随机选择的图片。训练块包含随机的剩余图像,但某些训练块可能对于一个类别的包含多于其他类别,训练块包含来自各个类别的5000张图片。
这些类是完全互斥的,及在一个类别中出现的图片不会出现在其它类中。
数据集版本
作者提供了3个版本的数据集:python version; Matlab version; binary version。
可根据自己的需求选择。
数据集下载地址:下载链接
数据集布置
以python version进行介绍,Matlab version与之相同。
下载后获得文件 data_batch_1, data_batch_2,…, data_batch_5。测试块相同。这些文件中的每一个都是用cPickle生成的python pickled对象。
具体使用方法:
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
返回字典类,每个块的文件包含一个字典类,包含以下元素:
data
: 一个100003072的numpy数组(unit8)每个行存储3232的彩色图片,3072=1024*3,分别是red, green, blue。存储方式以行为主。labels
:使用0-9进行索引。
数据集包含的另一个文件batches.meta同样包含python字典,用于加载label_names。如:label_names[0] == “airplane”, label_names[1] == “automobile”
来源:https://blog.csdn.net/m0_51816252/article/details/125057729


猜你喜欢
- 1下载安装1.1打开官网http://www.jetbrains.com/pycharm/download/#section=windows
- 从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取
- Exec sp_droplinkedsrvlogin ZYB,Null --删除映射(录与链接服务器上远程登录之间的映射) Exec sp_
- 先简单的了解下日期和时间数据类型及工具python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以
- 前言正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供
- python中的turtle库是3.6版本中新推出的绘图工具库,那么如何使用呢?下面小编给大家分享一下。首先打开pycharm软件,右键单击
- 叨叨几句哈喽兄弟们,今天实现一下人脸识别。先问大家一个问题什么是百度Aip模块?百度AI平台提供了很多的API接口供开发者快速的调用运用在项
- 生成txt文件:mesg = "hello world"with open("test.txt",
- 本文实例讲述了python访问mysql数据库的实现方法。分享给大家供大家参考,具体如下:首先安装与Python版本匹配的MySQLdb示例
- 这是一个PHP的文件上传类带图片显示的.其实做成函数就可以了.不过还是做成类好玩一点.~~~~ 本来应该用JS来验证上传文件类型的.但懒得做
- 前言在日常工作中,常常需要周期性地执行某些任务,常用的方式是采用 Linux 系统自带的 crond 结合命令行实现,但最近却遇到了一个让人
- 本文实例讲述了Go语言实现的树形结构数据比较算法。分享给大家供大家参考。具体实现方法如下:// Two binary trees may b
- 一、偏好资源的积累利用DreamWeaver 4制作网页会应用到许多各种类型的要素,比如色彩、图片、模板、脚本等。利用站点资源面板将这些东东
- MASK图像掩膜处理在图像操作中有时候会用到掩膜处理,如果使用遍历法掩膜图像ROI区域对于python来讲是很慢的,所以我们要找到一种比较好
- 前言福宝们,下午好啊。改版后的第4.5章阅读量有点少呀,不知道是不是拖更了一天的缘故。呜呜呜,以后一定要做个不拖更的好熊,所以今天继续爆肝第
- 本文实例讲述了Python Web框架之Django框架cookie和session用法。分享给大家供大家参考,具体如下:part 1 概念
- Django在执行python manage.py makemigrations的时候一切正常但是执行python manage.py mi
- 本文实例讲述了golang语言中for循环语句用法。分享给大家供大家参考。具体分析如下:for循环是用来遍历数组或数字的。用for循环遍历字
- 只要把下面代码放到index.asp或者default.asp中,只要在首页代码顶部引用call Check_Wap(),这个也是我的工程中
- golang.org不能访问的问题解决golang.org被屏蔽了,直接访问不了,解决办法如下:在 http://ping.eu/