对于深度学习来说,数据,算法,基础计算硬件是三个非常重要的部分。

在使用数据之前,了解好数据的相关信息是很有必要的。

一般发布一个开源的数据集都可以找到介绍的论文。

这次使用的是FashionMNIST数据集进行学习。

FashionMNIST的创造者是打算代替MNIST数据集,其在保持MNIST的10个类别的情况下使用的是不同种类的衣服来代替手写的数字,从而增加了一定的难度。

准备数据的过程可以分为三个阶段:

E.(extract)从源数据中提取出数据

T.(transform)把数据转换成想要的格式

L.(load)将数据加载进合适的结构当中

pytorch提供了一些包和类来使这三个过程变得简单起来

import torchvision
import torchvision.transforms as transforms

torchversion提供了获取一些热门的数据集,模型,图像转换的方法

torchvision.transforms则是包含了一些图像处理的转换接口

使用pytorch准备数据的过程

1.E:从给定的URL处获取Fashion-MNIST的图像数据

2.T:将数据转化为张量的形式

3.L:将数据放入到一个对象中来方便使用

train_set = torchvision.datasets.FashionMNIST(root='./data',train=True,download=True,transform=transforms.Compose([transforms.ToTensor()])
)

root指明数据要放在的位置,train指明该数据是作为训练集还是测试集,download表明是否要下载 ,transform表明要怎么转换原数据

现在相当于完成了E和T。

train_loader = torch.utils.data.DataLoader(train_set,batch_size=1000,shuffle=True
)

把转换好的对象放到加载器中,方便我们使用

自定义数据

如果在torchvision中没有我们要用的数据集,我们也可以自己去生成。,通过

torch.utils.data.Dataset这样一个抽象类来产生能够传递给DataLoader的对象。torchvision也是使用了它来进行提取数据和转换数据。

E:获取数据:

import torch
import torchvision.transforms as T
import numpy as np
from torch.utils.data import DataLoader, random_split,Dataset
import PIL.Image as Image
class MiniImageNet(Dataset):def __init__(self,datapath,train,transform=None):self.images = np.load(datapath+'/miniimagenet.npy')self.transform = transformself.trainset = self.images[:50000,:,:]self.testset = self.images[50000:,:,:]self.train = traindef __len__(self):if self.train==True:return self.trainset.shape[0]else:return self.testset.shape[0]def __getitem__(self,index):if self.train==True:image_index = self.trainset[index]else:image_index = self.testset[index]image_index = Image.fromarray(np.uint8(image_index))if self.transform:image_index = self.transform(image_index)return (image_index,0)

_init_用来读取,准备数据

_len_获取整个数据集的大小

_getitem_获取一个数据,通过index来得到

T:转换数据,在E中进行转换

def train_transforms(dataset):if dataset == "cifar10":# "When full-network fine-tuning on CIFAR-10 and CIFAR100, we use the augmentation popularized by Wide Residual# Networks: 4 pixels are reflection padded on each side, and# a 32 × 32 crop is randomly sampled from the padded image or its horizontal flip"return T.Compose([T.RandomCrop(32, padding=4, padding_mode="reflect"),T.RandomHorizontalFlip(),T.ToTensor(),])elif dataset == "mnist" or dataset == "fmnist":return T.ToTensor()

L:得到一个batch的数据:

def imagenet_dataloader(batch_size):datapath = 'data'train_ds = MiniImageNet(datapath,train=True,transform=train_transforms("cifar10"))valid_ds = MiniImageNet(datapath,train=True,transform=test_transforms("cifar10"))test_ds = MiniImageNet(datapath,train=False,transform=test_transforms("cifar10"))train_size = int(0.9 * len(train_ds))#因为对训练集进行了数据增强,而验证集没有使用,所以要分开写train_ds, _ = random_split(train_ds,[train_size, len(train_ds) - train_size],generator=torch.Generator().manual_seed(0),)_, valid_ds = random_split(valid_ds,[train_size, len(valid_ds) - train_size],generator=torch.Generator().manual_seed(0),)train_dl = DataLoader(train_ds, shuffle=True, batch_size=batch_size, num_workers=8)valid_dl = DataLoader(valid_ds, batch_size=batch_size, num_workers=8)test_dl = DataLoader(test_ds, batch_size=batch_size, num_workers=8)return train_dl, valid_dl, test_dl

cifar10数据集_pytorch入门(四)-数据相关推荐

  1. Caffe2——cifar10数据集创建lmdb或leveldb类型的数据

    Caffe2--cifar10数据集创建lmdb或leveldb类型的数据 时间:2015-05-05 15:52:31      阅读:5183      评论:0      收藏:1      [ ...

  2. 【小白学习PyTorch教程】八、使用图像数据增强手段,提升CIFAR-10 数据集精确度...

    「@Author:Runsen」 上次基于CIFAR-10 数据集,使用PyTorch构建图像分类模型的精确度是60%,对于如何提升精确度,方法就是常见的transforms图像数据增强手段. imp ...

  3. 【小白学习PyTorch教程】八、使用图像数据增强手段,提升CIFAR-10 数据集精确度

    @Author:Runsen 上次基于CIFAR-10 数据集,使用PyTorch ​​构建图像分类模型的精确度是60%,对于如何提升精确度,方法就是常见的transforms图像数据增强手段. im ...

  4. cifar10数据集测试有多少张图_pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)...

    首先这是VGG的结构图,VGG11则是红色框里的结构,共分五个block,如红框中的VGG11第一个block就是一个conv3-64卷积层: 一,写VGG代码时,首先定义一个 vgg_block(n ...

  5. TensorFlow基于cifar10数据集实现进阶的卷积网络

    TensorFlow基于cifar10数据集实现进阶的卷积网络 学习链接 CIFAR10模型及数据集介绍 综述 CIFAR10数据集介绍 CIFAR10数据集可视化 CIFAR10模型 CIFAR10 ...

  6. 我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!

    大家好,我是红色石头! 在上两篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 详细介绍了卷积神经网络 ...

  7. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!

    今天我们将使用 Pytorch 来继续实现 LeNet-5 模型,并用它来解决 CIFAR10 数据集的识别. 正文开始! 二.使用LeNet-5网络结构创建CIFAR-10识别分类器 LeNet-5 ...

  8. 【小白学习PyTorch教程】六、基于CIFAR-10 数据集,使用PyTorch 从头开始​​构建图像分类模型...

    「@Author:Runsen」 图像识别本质上是一种计算机视觉技术,它赋予计算机"眼睛",让计算机通过图像和视频"看"和理解世界. 在开始阅读本文之前,建议先 ...

  9. 【Python2】Keras_ResNet 在Cifar10数据集上分类,Flask框架部署目标检测模型

    文章目录 1.导入库 2.数据准备 2.1 加载训练集 2.2 加载测试集 2.3 对类别做One-Hot编码 2.4 对图片像素的0-255值做归一化,并减去均值 3.搭建神经网络 3.1 定义函数 ...

最新文章

  1. 获取某个元素相对于视窗的位置-getBoundingClientRect
  2. [Golang] 从零開始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)
  3. 下载服务器 linux系统,如何搭建Linux服务器
  4. 采购交货期延误的原因分析
  5. 鸿蒙系统电视k歌,华为电视怎么k歌?看完两分钟快速开启K歌模式
  6. 调试JavaScript/VB Script脚本程序(ASP篇)
  7. python几种括号表示的类型
  8. python实现统计你一共写了多少行代码
  9. 玩转lib-notify (转自PT牛的博客)
  10. CListCtrl 使用方法总结
  11. 计算机名会影响电脑网络吗,电脑接网线会比连WiFi网速快吗【详细介绍】
  12. 学python用什么软件-零基础初学python需要安装哪些软件?希望对你们有帮助
  13. C# COM Object for Use In JavaScript / HTML, Including Event Handling(转载)
  14. bootstrap 和 jqueryui
  15. 对Java语言的byte类型变量进行无符号提升
  16. python处理矩阵运算、转置矩阵、逆矩阵、单位矩阵
  17. Oracle递归的实现
  18. 港科夜闻|香港科大(广州)熊辉教授获委任为协理副校长(知识转移)
  19. “财界奥斯卡”CGMA全球管理会计2021年度中国大奖榜单揭晓
  20. dBSPL、dBm、dBu、dBV、dBFS

热门文章

  1. 华为暂没有推出鸿蒙手机计划;苹果否认 iPhone 辐射超标;Kotlin 1.3.50 发布 | 极客头条...
  2. 阿里拟 20 亿美元收购网易考拉;联通 5G 套餐最低 190 元;Rust 1.37.0 发布 | 极客头条...
  3. 传海思为 PC 开发 CPU/GPU ;小米将发布第二款 5G 手机;Firefox 68.0.2 发布 | 极客头条...
  4. @前端工程师,节约网站流量用这一招就够了!
  5. 索尼发布新一代 IoT 芯片,万物互联方式将改写?
  6. 宇宙第一 IDE Visual Studio 支持 Java 了!
  7. 程序员最想要十八般武艺俱全的“保姆型”项目经理!
  8. 微信小程序全面开放近一年,姗姗来迟的阿里还有胜局吗?| 畅言
  9. 这位曾指责乔布斯的怪老头,推出的AppleScript比Windows还要快!
  10. String的内存分配与拼接操作,华为架构师深入讲解Java开发