xml地图|网站地图|网站标签 [设为首页] [加入收藏]

智能家电

当前位置:美高梅游戏网站 > 智能家电 > 超简单!pytorch入门教程(四):准备图片数据集

超简单!pytorch入门教程(四):准备图片数据集

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-06 02:22

在训练神经网络之前,我们必须有数据,作为资深伸手党,必须知道以下几个数据提供源:

Zen君的配置是macbook pro,升级到Mac Serria安装不了qt,无法显示图片,好在发现了pytorch,正好Zen君以前也玩过python的,所以非常激动。这个教程系列也是趁着心情激动写下来的,不知道会不会持续更新,暂时别抱有期待:)

图片 1CIFAR-10图片样本截图

安装pytorch之前,需要安装好python,还没安装过python的宝宝请先移步到廖雪峰的python教程,待安装熟悉完之后,再过来这边。

CIFAR-10是多伦多大学提供的图片数据库,图片分辨率压缩至32x32,一共有10种图片分类,均进行了标注。适合监督式学习。CIFAR-10数据下载页面

我们接着讲。

图片 2imagenet首页

打开pytorch官网

ImageNet首页

图片 3如图所示,选择好系统,包管理工具,python的版本,是否支持CUDA(Zen君的配置是OSX,包管理工具是pip,版本2.7,不支持CUDA,哭)

图片 4imagefolder首页

选择好相应的配置,然后就可以复制下面“Run this command”的代码,直接打开命令台粘贴运行,即完成pytorch的安装。

ImageFolder首页

要介绍Tensor这个数据类型,我觉得有必要扯一下数学。

图片 5LSUN Classification

我们都知道:

LSUN 图片下载地址

标量是只有大小,没有方向的量,如1,2,3等

图片 6coco首页

向量是有大小和方向的量,其实就是一串数字,如

COCO首页地址

矩阵是好几个向量拍成一排合并而成的一堆数字,如[1,2;3,4]

为了方便加载以上五种数据库的数据,pytorch团队帮我们写了一个torchvision包。使用torchvision就可以轻松实现数据的加载和预处理。

图片 7如图,我们可以看出,矩阵是二维的,向量是一维的,标量是零维的。

我们以使用CIFAR10为例:

那么张量是什么呢?呵呵呵呵!大家估计也能猜出来!是按照三维排列的一堆数字?

导入torchvision的库:

是的。但是也不完全正确。

import torchvision

import torchvision.transforms as transforms # transforms用于数据预处理

其实标量,向量,矩阵它们三个也是张量,标量是零维的张量,向量是一维的张量,矩阵是二维的张量。

使用datasets.CIFAR10()函数加载数据库。CIFAR10有60000张图片,其中50000张是训练集,10000张是测试集。

图片 8张量就是按照任意维排列的一堆数字的推广。如图所示,矩阵不过是三维张量下的一个二维切面。要找到三维张量下的一个标量,需要三个维度的坐标来定位。

#训练集,将相对目录./data下的cifar-10-batches-py文件夹中的全部数据(50000张图片作为训练数据)加载到内存中,若download为True时,会自动从网上下载数据并解压trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=False, transform=None)

除此之外,张量还可以是四维的、五维的、。。。等等

下面简单讲解root、train、download、transform这四个参数

数学扯完了,我们撸串代码操练操练

1.root,表示cifar10数据的加载的相对目录

>>>import torch #引用torch包

>>>x = torch.Tensor #构造一个2x3的矩阵,没初始化但仍然会有值

>>>x

8.0118e+28 4.5768e-41 8.0118e+28

4.5768e-41 2.9747e-37 1.4013e-45

[torch.FloatTensor of size 2x3] #可以看出数据类型是浮点数的2x3矩阵

2.train,表示是否加载数据库的训练集,false的时候加载测试集

看矩阵看不出张量的道道,我们来点刺激的

3.download,表示是否自动下载cifar数据集

>>>y=torch.Tensor #构造一个4x2x3的张量,没初始化

>>>y

=

1.00000e-29 *

0.0000 2.5244 0.0000

2.5244 0.0000 0.0000

=

1.00000e-29 *

0.0000 0.0000 0.0000

0.0000 0.0000 0.0000

=

1.00000e-29 *

0.0000 0.0000 0.0000

0.0000 0.0000 0.0000

=

1.00000e-29 *

0.0000 0.0000 0.0000

2.5244 0.0000 2.5244

[torch.FloatTensor of size 4x2x3]

4.transform,表示是否需要对数据进行预处理,none为不进行预处理

我们从上面的返回值可以看出,4x2x3的张量y由4个2x3的矩阵构成,这符合了我们数学上的定义。

由于美帝路途遥远,靠命令台进程下载100多M的数据速度很慢,所以我们可以自己去到cifar10的官网上把CIFAR-10 python version下载下来,然后解压为cifar-10-batches-py文件夹,并复制到相对目录./data下。(若设置download=True,则程序会自动从网上下载cifar10数据到相对目录./data下,但这样小伙伴们可能要等一个世纪了),并对训练集进行加载(train=True)。

我们先初始化两个张量:

本文由美高梅游戏网站发布于智能家电,转载请注明出处:超简单!pytorch入门教程(四):准备图片数据集

关键词: