Pytorch学习:常见数据集torchvision.datasets及数据集的使用DataLoader

news2024/11/24 4:10:14

文章目录

    • 1. Datasets常见数据集
      • 1.1 CIFAR10
      • 1.2 Fashion-MNIST
      • 1.3 ImageNet
    • 2. DataLoader
      • 2.1 shuffle
      • 2.2 drop_last

1. Datasets常见数据集

Torchvision在 torchvision.datasets 模块中提供了许多内置的数据集,以及用于构建自己的数据集的实用程序类。

官方文档:Datasets

  • 所有数据集都是 torch.utils.data.Dataset 的子类,即它们实现了 __getitem____len__ 方法。
  • 它们都可以被传递到 torch.utils.data.DataLoadertorch.utils.data.DataLoader 可以使用 torch.multiprocessing 工作器并行加载多个样本。

举例:在这里插入图片描述


1.1 CIFAR10

数据集地址:CIFAR-10

官方文档:torchvision.datasets.CIFAR10
CLASS 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,可选):如果为True,则从训练集创建数据集,否则从测试集创建。
  • transform(可调用,可选):接受PIL图像并返回转换版本的函数/转换。例如, transforms.RandomCrop
  • target_transform(可调用,可选):接收目标并对其进行转换的函数/transform。
  • download(bool,可选):如果为true,则从Internet下载数据集并将其放在根目录中。如果数据集已下载,则不会再次下载。

CIFAR-10数据集由10个类别的60000张32 x32彩色图像组成,每个类别6000张图像。有50000张训练图像和10000张测试图像。

该数据集分为五个训练批次和一个测试批次,每个批次有10000张图像。测试批次包含从每个类别中随机选择的1000个图像。训练批次包含随机顺序的剩余图像,但是一些训练批次可能包含来自一个类的图像多于来自另一个类的图像。在它们之间,训练批次包含来自每个类的5000个图像。

以下是数据集中的类,以及每个类中的10个随机图像:
在这里插入图片描述
代码调用

import torchvision
from torch.utils.data import DataLoader

train_data = torchvision.datasets.CIFAR10("./dataset", train=True, transform=torchvision.transforms.ToTensor(),
                                         download=True)
train_loader = DataLoader(dataset=train_data, batch_size=64, shuffle=True, num_workers=0, drop_last=True)

1.2 Fashion-MNIST

数据集地址:Fashion-MNIST

官方文档:torchvision.datasets.FashionMNIST
CLASS torchvision.datasets.FashionMNIST(root: str, train: bool = True, transform: Optional[Callable] = None, target_transform: Optional[Callable] = None, download: bool = False)
主要参数:

  • root(string): FashionMNIST/raw/train-images-idx3-ubyte 和 FashionMNIST/raw/t10k-images-idx3-ubyte 存在的数据集的根目录。
  • train(bool,可选):如果为True,则从 train-images-idx3-ubyte 创建数据集,否则从 t10k-images-idx3-ubyte 创建。
  • download(bool,可选):如果为True,则从Internet下载数据集并将其放在根目录中。如果数据集已下载,则不会再次下载。
  • transform(可调用,可选:接受PIL图像并返回转换版本的函数/转换。例如, transforms.RandomCrop。
  • target_transform(可调用,可选):接收目标并对其进行转换的函数/transform。

Fashion-MNIST 是Zalando文章图像的数据集-由60,000个示例的训练集和10,000个示例的测试集组成。每个示例都是28 x28灰度图像,与来自10个类别的标签相关联。
在这里插入图片描述
代码调用

import torchvision
from torch.utils.data import DataLoader

train_data = torchvision.datasets.FashionMNIST("./dataset", train=True, transform=torchvision.transforms.ToTensor(),
                                         download=True)
train_loader = DataLoader(dataset=train_data, batch_size=64, shuffle=True, num_workers=0, drop_last=True)

1.3 ImageNet

数据集地址(Kaggel):ImageNet

官方文档:torchvision.datasets.ImageNet
CLASS torchvision.datasets.ImageNet(root: str, split: str = 'train', **kwargs: Any)
主要参数:

  • root(string):ImageNet数据集的根目录。
  • split(string,可选):数据集分割,支持 train 或 val 。
  • transform(可调用,可选):接受PIL图像并返回转换版本的函数/转换。例如, transforms.RandomCrop。
  • target_transform(可调用,可选):接收目标并对其进行转换的函数/transform。
  • loader:加载给定路径的图像的函数。

ImageNet最常用的子集是ImageNet大规模视觉识别挑战(ILSVRC)2012-2017图像分类和定位数据集。该数据集涵盖1000个对象类,包含1,281,167张训练图像,50,000张验证图像和100,000张测试图像。此子集在Kaggle上可用。

代码调用(注:ImageNet无法使用torchvision直接下载)

import torchvision
from torch.utils.data import DataLoader

train_data = torchvision.datasets.ImageNet("./dataset", split=train=True, transform=torchvision.transforms.ToTensor())
train_loader = DataLoader(dataset=train_data, batch_size=64, shuffle=True, num_workers=0, drop_last=True)

2. DataLoader

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备的数据集
train_data = torchvision.datasets.CIFAR10("./dataset", train=True, transform=torchvision.transforms.ToTensor(),
                                         download=True)
train_loader = DataLoader(dataset=train_data, 
						 batch_size=64, 
						 shuffle=True, 
						 num_workers=0, 
						 drop_last=True)

writer = SummaryWriter("logs")
step = 0
for data in train_loader:
    imgs, targets = data
    writer.add_images("train_data", imgs, step)
    step = step + 1

writer.close()

打开命令行

tensorboard --logdir=logs

2.1 shuffle

打乱顺序。
在这里插入图片描述
在这里插入图片描述

2.2 drop_last

丢弃最后一组不满 batch_size 的数据。
在这里插入图片描述\

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/923379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于象群算法优化的BP神经网络(预测应用) - 附代码

基于象群算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于象群算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.象群优化BP神经网络2.1 BP神经网络参数设置2.2 象群算法应用 4.测试结果:5.Matlab代码 摘要…

白酒行业半年报:舍得酒业营收净利碾压水井坊

次高端川酒下半场,谁是A股“川酒老三”? “川酒六朵金花”中的次高端白酒代表:水井坊(600779.SH)、舍得酒业(600702.SH)于近日公布了2023年半年报,其业绩呈现不同趋势。 「不二研究」据其半年报发现:今年上半年&…

基于函数计算一键部署 Stable Diffusion

一、资源方式介绍 本实验支持开通免费试用、个人账户资源两种实验资源方式。 建议首次开通函数计算用户选择开通免费试用。 函数计算老用户选择个人账户资源。 在实验开始前,请您选择其中一种实验资源,单击确认开启实验。 二、选择开通免费试用&…

迅为RK3568开发板GPIO之外接模块

在迅为RK3568开发板上有一组GPIO,可以用来外接各种外设模块,从面实现一系列好玩的功能,一起来看看各个模块合集吧 RFID模块: 工作电流:13—20mA/直流3.3V 空闲电流:10-13mA/直流3.3V 休眠电流:…

badgerdb中的logfile

logfile的作用 logfile是一种日志结构,用来记录日志,lsm tree是日志追加写的模式,在bagerdb中,vlog和sst在磁盘中的存放方式都是使用的logfile结构 // memTable structure stores a skiplist and a corresponding WAL. Writes t…

【MySQL】MySQL中MyIsAM和InnoDB存储引擎的区别(面试必考!!)

目录 MyIsAM和InnoDB的区别 区别主要在于: 事务支持: 并发控制: 外键支持: 数据缓存和索引: 这么说可能不太好理解,让我们展开聊聊 数据一致性和恢复: InnoDB肯定是比myIsam的功能强大的&#xff0…

GNU make系列之介绍Makefile

一.欢迎来到我的酒馆 在本章节介绍Makefile。 目录 一.欢迎来到我的酒馆二.GNU make 预览三.一个简单的Makefile四.make程序如何处理Makefile文件 二.GNU make 预览 2.1 GNU make工具会自动决定哪些程序需要被重新编译,并且执行相应的命令来重新编译程序。在本系列博…

面试官:策略模式有使用过吗?我:没有......

面试官:策略模式有使用过吗?我:没有… 何为策略模式? 比如在业务逻辑或程序设计中比如要实现某个功能,有多种方案可供我们选择。比如要压缩一个文件,我们既可以选择 ZIP 算法,也可以选择 GZIP…

[Makefile] 预宏定义的使用

main.c 文件如下&#xff1a; #include <stdio.h> int main() {printf("soft infomation\n");//以下信息均在gcc时已预定义printf("soft_ver:\t%s\n",__VER__);printf("author:\t\t%s\n",__AUTHOR__);printf("sn_num:\t\t%d\n"…

递归算法应用(Python版)

文章目录 递归递归定义递归调用的实现递归应用数列求和任意进制转换汉诺塔探索迷宫找零兑换-递归找零兑换-动态规划 递归可视化简单螺旋图分形树&#xff1a;自相似递归图像谢尔宾斯基三角 分治策略优化问题和贪心策略 递归 递归定义 递归是一种解决问题的方法&#xff0c;其精…

Java后端开发面试题——消息中间篇

RabbitMQ-如何保证消息不丢失 交换机持久化&#xff1a; Bean public DirectExchange simpleExchange(){// 三个参数&#xff1a;交换机名称、是否持久化、当没有queue与其绑定时是否自动删除 return new DirectExchange("simple.direct", true, false); }队列持久化…

九、pikachu之敏感信息泄露

文章目录 1、敏感信息泄露概述2、实战 1、敏感信息泄露概述 由于后台人员的疏忽或者不当的设计&#xff0c;导致不应该被前端用户看到的数据被轻易的访问到。 比如&#xff1a; 通过访问url下的目录&#xff0c;可以直接列出目录下的文件列表;输入错误的url参数后报错信息里面…

基于数据湖的多流拼接方案-HUDI概念篇

目录 一、为什么需要HUDI&#xff1f; 1. 传统技术选型存在哪些问题&#xff1f; 2. Hudi有什么优点&#xff1f; 基于 Hudi Payload 机制的多流拼接方案&#xff1a; 二、HUDI的应用场景 1. 什么场景适合使用hudi&#xff1f; 2. 什么场景不适合使用hudi&#xff1f; …

双指针算法实例3(快乐数)

题目&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结…

小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)

目录 一、keepalivedlvs作用 二、调度器配置 部署LVS主备调度器 调整master和backup的ARP参数&#xff08;一致&#xff09;全都安装一遍 启动master和backup的keepalived与ipvsadm 三、web节点配置 1、调整ARP参数 2、 配置虚拟IP地址 3、添加回环路由 一、keepalive…

开启元宇宙农场的绝世盛宴——Fram world

近年科技突飞猛进&#xff0c;元宇宙横扫游戏与金融领域&#xff0c;其中震惊全球的Fram world&#xff0c;不仅为玩家带来崭新娱乐&#xff0c;更在游戏与经济的融合中掀起惊人革命&#xff01;凭借Cardano基金会的强大支持&#xff0c;与英国英利区块链研究所的密切合作&…

Java多线程(十一)

目录 一、什么是CAS 二、CAS 是怎么实现的 三、CAS的应用 3.1 实现原子类 3.2 实现自旋锁 四、CAS的ABA问题 4.1 什么是ABA问题 4.2 ABA问题引发的BUG 4.3 ABA问题的解决方案 五、CAS与加锁的区别 一、什么是CAS CAS&#xff1a;全称Compare and swap&#xff0c;也就是“比较…

ASE入门系列

cast shadows、receive shadows 和阴影相关&#xff08;投射阴影和自身阴影&#xff09;&#xff0c;关闭&#xff0c;阴影消失&#xff1b; queue index 队列索引&#xff0c;不透明和半透明物体有一个默认队列&#xff0c;不透明物体&#xff0c;默认队列是2000&#xff0c…

cortex-A7核IIC实验--STM32MP157AAA

实验目的&#xff1a;采集温湿度传感器值 一&#xff0c;IIC概念 1.同步串行半双工总线&#xff0c;主要用于链接整体电路&#xff0c;硬件结构简单&#xff0c;接口连接方便&#xff0c;成本较低 2.两线制&#xff0c;只有两根双向信号线&#xff0c;数据线SDA,时钟线SCL …

【校招VIP】CSS校招考点之水平/垂直居中

考点介绍&#xff1a; 前端布局非常重要的一环就是页面框架的搭建&#xff0c;也是最基础的一环。在页面框架搭建之中&#xff0c;又有居中布局/多列布局/全局布局。今天介绍一下居中布局的水平居中和垂直居中。 『CSS校招考点之水平/垂直居中』相关题目及解析内容可点击文章末…