有趣的深度学习2——利用pytorch对数据集进行预处理

有趣的深度学习2——利用pytorch对数据集进行预处理

1.输入数据的表示方法

随着深度学习的发展,以神经网络为模型的功能越来越强大,这一部分归功于现代设备超强的计算能力,也有很大一部分功劳是属于目前已有的各种丰富数据集,以图像为代表的Mnist、CIFAR-10、CIFAR-100、ImagNet以及COCO数据集等,还有众多丰富的文本数据集和语音数据集等。

一般来说,我们传统的神经网络的神经元之间的信息传递是以浮点数的形式来进行表示的,而如何将我们所能理解的图像、文本和语音转换成神经网络可以理解的浮点数,这个过程即是数据集的预处理过程。而对于不同类型的数据集又有不同的处理方法,这里重点解释一下图像数据的表示方法。

图像数据可以转换成像素点的集合,而每个像素点可以有一通道、三通道等,一通道以mnist数据集为代表的灰度图像,三通道的有常见的CIFAR数据集和ImageNet的RGB图像,我们对于单个像素点的通道取值范围一般是在0~255之间的整数,或者以百分比作为对比度,所以一张图片可以表示为一个三维的张量(hwc,其中h代表图像高度的像素数量,w代表的图像宽度的像素数量,c代表的是图片的一个通道数,灰度图像c=1,RGB图像c=3),而神经网络在训练中一般都是一次训练一个批次的图片,所以输入的图片的长宽是需要等距的,此外还会添加一个批次的维度(nhw*c)。

这里以mnist为例展开说明一下:如图所示,这里给出单通道mnist数据集一张图片的矩阵表示形式,同时给定在神经网络模型中mnist数据集的维度和输入形式(nch*w)

在这里插入图片描述
在这里插入图片描述

2.使用torchvision工具箱

利用好pytorch这个工具,最常见的公开数据集在torchvision工具包里面都给我们做好了数据的预处理工作,我们只要学会简单的调用就可以啦。这里给出MNIST、CIFAR-10、VOC数据集、Coco数据集和ImagNet数据集的torchvision的调用方法示例:

# annotation 调用一些要用到的库
import torch
imoort torchvisoon
batch_size=512
train_loader = torch.utils.data.DataLoader(
    torchvision.datasets.MNIST('mnist_data', train=True, download=True,
                               transform=torchvision.transforms.Compose([
                                   torchvision.transforms.ToTensor(),
                                  torchvision.transforms.Normalize(
                                      (0.1307,), (0.3081,))
                               ])),
    batch_size=batch_size, shuffle=True)

test_loader = torch.utils.data.DataLoader(
    torchvision.datasets.MNIST('mnist_data/', train=False, download=True,
                               transform=torchvision.transforms.Compose([
                                   torchvision.transforms.ToTensor(),
                                   torchvision.transforms.Normalize(
                                       (0.1307,), (0.3081,))
                               ])),
    batch_size=batch_size, shuffle=False)

# anntation:数据集的调用,一般需要经过加载和装载俩个部分:Dataset实现加载部分的功能,实现了通过索引找寻数据集数据和标签,以及返回数据集大小的功能;Dataloader则实现数据集装载的功能,一种类似于自动迭代的功能,还可定义多线程、多核加载读取、以及随机化读取的功能;
# annotation 调用一些要用到的库
import torch
imoort torchvisoon
train_dataset
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树杰同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值