pytorch 数据处理

torch工具类Dataset和DataLoader

对于NN模型训练来说,需要将数据转换成torch识别的数据类型,才能喂给模型。pytorch中,通常使用Dataset和DataLoader这两个工具类来构建数据管道。

  • Dataset定义了数据集的内容,类似一个列表的数据结构,有确定的长度,能够用索引获取数据集中的元素。
  • DataLoader定义了按batch加载数据集的方法,它是一个实现了__iter__方法的可迭代对象,每次迭代输出一个batch的数据。DataLoader能够控制batch的大小,batch中元素的采样方法,以及将batch结果整理成模型所需输入形式的方法,并且能够使用多进程读取数据。
batch_size: how many samples per batch to load
shuffle: set to ``True`` to have the data reshuffled at every epoch (default: ``False``).
drop_last: set to ``True`` to drop the last incomplete batch

自定义DataSet都需要集成DataSet父类,复写 __init__,__getitem__和__len__方法。

from numpy.ma.core import shape
from torch.utils.data import Dataset
import torchclass MyDataset(Dataset):def __init__(self, dataList, labelList):self.dataList = dataListself.labelList = labelListdef __getitem__(self, idx):return self.dataList[idx], self.labelList[idx]def __len__(self):return len(self.labelList)dataList, labelList = torch.randn(1000,3),torch.randint(low=0, high=2, size=(1000,)).float()
dataset_test = MyDataset(dataList, labelList)

用DataLoader读取Dataset的数据

dl = DataLoader(dataset_test, batch_size=4, drop_last=True)
data, label = next(iter(dl))
print("data=", data)
print("label=", label)

Dataset的创建方法

Dataset创建数据集常用的方法有:

  • 继承 torch.utils.data.Dataset 创建自定义数据集,如上;
  • 使用 torch.utils.data.TensorDataset 根据Tensor创建数据集;
  • 使用 torchvision.datasets.ImageFolder 根据图片目录创建图片数据集。

使用torchvision提供的数据集

数据集地址:# https://pytorch.org/vision/stable/datasets.html#built-in-datasets

from torch.utils.data import TensorDataset,DataLoader
import torchvision
from torch.utils.tensorboard import SummaryWriter# 下载训练集
train_set = torchvision.datasets.CIFAR10(root="./trainset", train=True, download=True)
# 下载测试集
test_set = torchvision.datasets.CIFAR10(root="./trainset", train=False, download=True)
# 查看数据类型
print(test_set[0])
print(test_set.classes)# 做数据转换,从PIL>tensor
dataset_compose = torchvision.transforms.Compose([torchvision.transforms.ToTensor()
])# 利用tensorboard展示浏览图像
writer = SummaryWriter("cifar10")
for i in range(10):img, target = test_set[i]writer.add_image("test_set", dataset_compose(img), i)writer.close()

DataLoader的使用

test_set = torchvision.datasets.CIFAR10(root="./trainset", train=False, download=True, transform=transforms.ToTensor())
test_loader = DataLoader(dataset=test_set, batch_size=4, shuffle=True, drop_last=False)
for data in test_loader:imgs, targets = dataprint(imgs.shape)print(targets)

通过dataloader可一次性从数据集中取多少数据,并且可以设定采样情况。

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

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

相关文章

Windows怎么让防火墙开放端口

开放端口的方法 先从控制面板,进入到Windows Defender防火墙 点击高级设置,点击入站规则 点击右边的新建规则,点击端口,点击下一步 选择协议类型和端口号点击下一步即可 查看是否开放端口成功的方法: 进入任务管

【rk3588】环境搭建及系统编译

开发板:ROC-RK3588S-PC 官方链接:Welcome to ROC-RK3588S-PC Manual — Firefly Wiki (t-firefly.com) 串口调试配置 一、产品介绍 — Firefly Wiki (t-firefly.com),可以按照官方链接的说明在个人PC上使用串口。这个串口会输出rk3588的日…

【Python机器学习】NLP词频背后的含义——从词频到主题得分

目录 TF-IDF向量及词形归并 主题向量 一个思想实验 一个主题评分算法 一个LDA分类器 LDiA TF-IDF向量(词项频率—逆文档频率向量)可以帮助我们估算词在文本块中的重要度,我们使用TF-IDF向量和矩阵可以表明每个词对于文档集合中的一小段…

WHAT - 通过 react-use 源码学习 React(Side-effects 篇)

目录 一、官方介绍1. Sensors2. UI3. Animations4. Side-Effects5. Lifecycles6. State7. Miscellaneous 二、源码学习示例:n. xx - yySide-effects - useAsync, useAsyncFn, and useAsyncRetryuseAsyncuseAsyncFnuseAsyncRetry 一、官方介绍 Github 地址 react-u…

在vue3中封装WebSocket

下载websocket npm install websocket 或 yarn add websocket 一、新建webSockte.js文件 // webSocket.js // 自定义组合式函数,用于管理 WebSocket 连接 import { ref, onMounted, onBeforeUnmount } from "vue"; const useWebSocket (url, reco…

【日常记录-Linux】unzip指令

Author:赵志乾 Date:2024-08-28 Declaration:All Right Reserved!!! 1. 简介 unzip是一个在类Unix系统(如Linux、macOS)上广泛使用的命令行工具,用于解压缩.zip格式的文件。.zip是一种广泛支持…

离线环境玩转 Tauri

离线环境玩转 Tauri 1. Tauri 是什么 Tauri 是一个用于构建跨平台桌面应用程序的框架,它允许开发者使用前端技术(如 React、Vue、Svelte 等)来构建桌面应用程序,同时提供高性能和低资源消耗的特性。 Tauri 的核心思想是使用前端…

令牌和签名详细介绍+开发使用教程

令牌和签名简介 1. 令牌(Token) 概念 令牌(Token)是一个用于身份验证的小段数据,通常在用户登录时由服务器生成,并返回给客户端。客户端在后续的请求中将令牌附加到请求头中,服务器通过验证令…

鸿蒙 装饰器 @State、@Prop、@Link 等说明

首先要明白什么是“状态变量”?即被状态装饰器(@State、@Prop、@Link、@Provide、@Consume)修饰的变量,比如 @State str : string=; str就是状态变量。状态变量值的改变会引起UI界面重新渲染。 @State @State装饰的变量,是私有的,只能被组件内部访问,在声明时必须指定…

计算机视觉编程 1(图片处理)

目录 灰色度 缩略图 拷贝粘贴区域 调整图像尺寸 旋转图像45 画图线、描点 灰色度 灰度是指图像中每个像素的亮度值,用来描述图像中各个像素的明暗程度。在计算机视觉中,灰度可以通过以下方式来计算: 1. 平均值法:将图像中每…

【Linux】深入探讨Linux进程等待:`waitpid`与`wait`

文章目录 深入探讨Linux进程等待:waitpid与wait API一、waitpid与wait简介1. wait2. waitpid 二、waitpid与wait的实际应用1. 基本用法示例2. 使用 waitpid 处理多个子进程3. 非阻塞等待 三、使用场景 深入探讨Linux进程等待:waitpid与wait API 在Linux…

Java基础——自学习使用(泛型)

一、泛型的定义 泛型的本质是参数化类型,也就是所操作的数据类型被指定为一个参数。 泛型泛指一切类型,能够代表一切类型,是一种在编程中广泛使用的概念,特别是在面向对象编程中。它允许在编写代码时使用类型参数,这些…

WPS Office两个严重漏洞曝光,已被武器化且在野利用

WPS Office作为一款用户基数超过2亿的广泛使用的办公套件,被发现存在两个关键漏洞(CVE-2024-7262和CVE-2024-7263),这些漏洞可能导致用户遭受远程代码执行攻击。这两个漏洞的CVSS评分为9.3,表明它们的严重性很高&#…

C++:Opencv读取ONNX模型,通俗易懂

1. 准备 ONNX 模型 假设你已经有一个训练好的 ONNX 模型文件。可以从各类深度学习框架(如 PyTorch、TensorFlow)中导出 ONNX 模型。例如,下面是一个简单的 PyTorch 模型导出为 ONNX 文件的示例: import torch import torchvisio…

在使用React Hooks中,如何避免状态更新时的性能问题?

在React Hooks中避免状态更新时的性能问题,可以采取以下一些最佳实践: 避免不必要的状态更新: 使用React.memo、useMemo、和useCallback来避免组件或其子组件进行不必要的渲染。 使用useMemo: 对于基于状态或props的复杂计算&…

MES管理系统助力印刷企业实现智能化工艺流程

在印刷这一古老而充满活力的行业中,科技的浪潮正以前所未有的速度重塑着每一个生产环节。随着制造业数字化转型的深入,引入MES管理系统,为印刷企业带来了从原材料入库到成品出库的全流程智能化变革,不仅提升了生产效率&#xff0c…

剪辑小白必看:好用的剪辑工具推荐!

作为一位热爱创作的视频制作者,我尝试过不少剪辑软件,今天我想分享自己对福昕视频剪辑、爱拍剪辑、达芬奇和VSDC Video Editor这四款软件的使用体验。 福昕视频剪辑 链接:www.pdf365.cn/foxit-clip/ 我第一次接触到福昕视频剪辑是在朋友的…

python基础语法2

python基础语法2 了解整体内容可以从基础语法1开始,第2天了,开始上代码片段。 本篇主要内容:控制流语句if、for、match等。 打印及main方法 # 注释使用#号 #打印hello def print_hello(name):#这里加上f是打印变量内容,不加f打印…

树数据结构(Tree Data Structures)的全面指南:深度解析、算法实战与应用案例

树数据结构(Tree Data Structures)的全面指南:深度解析、算法实战与应用案例 引言 树数据结构(Tree Data Structures)作为计算机科学中的基石之一,以其独特的层次结构和分支特性,在众多领域发…

2012-2022年各省新质生产力匹配数字经济数据

2012-2022年各省新质生产力匹配数字经济数据 1、时间:2012-2022年 2、来源:各省年鉴、能源年鉴、工业年鉴、统计年鉴 3、指标:prov、year、gdp亿元、在岗职工工资元、第三产业就业比重、人均受教育平均年限、教育经费强度、在校学生结构、…