当前位置: 首页 > news >正文

Dataset与DataLoader、transform

文章目录

  • 1、Dataset
  • 2、DataLoader
    • 2.1 参数详解
      • 2.1.1 num_works
      • 2.1.2 pin_memory
      • 2.1.3 collate_fn
  • 3、图像增强
  • 4、重写transform

1、Dataset

在 PyTorch 中,如果要创建自定义的数据集(Dataset),通常会继承 torch.utils.data.Dataset 类。这是因为 PyTorch 提供了 Dataset 类来帮助管理数据集,并定义了一些必要的方法和属性,如 lengetitem 等。

在这里插入图片描述

import torch.utils.data as data
import torch
class MyDataSet(data.Dataset):def __init__(self):#创建tensor 含有20个数值 0-19self.data=torch.arange(0,20)def __getitem__(self, index):return self.data[index]def __len__(self):return len(self.data)if __name__ == '__main__':dataset=MyDataSet()print(len(dataset)) #20print(dataset[3]) #tensor(3)

2、DataLoader

if __name__ == '__main__':dataset=MyDataSet()print(len(dataset)) #20print(dataset[3]) #tensor(3)#定义读取规则 这里是打乱顺序 每次读取4个 所以20/4=5 Dataloader的长度是5Dataloader=data.DataLoader(dataset,shuffle=True,batch_size=4)print(len(Dataloader))for i in Dataloader:print(i)   #tensor([ 5, 10, 15, 16])# tensor([ 7, 18,  4,  0])# tensor([11,  3, 14,  1])# tensor([19,  8, 13, 12])# tensor([ 6,  2,  9, 17])

2.1 参数详解

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/95124230fc354

2.1.1 num_works

就是看用几个GPU来同时计算 一个GPU计算一个batch_SIZE
在这里插入图片描述

2.1.2 pin_memory

加快读取速度 默认为false

2.1.3 collate_fn

即我们DataLoader 每迭代出一个batch_size 是一个什么样的格式。
分类任务 其实collate_fn 不用重写 用官方自带的即可
get_item 首先根据索引找到每张图片及标签 然后是一个列表形式,之后再通过collate_fn 将图片和标签重组在一起,images的shape为 (batch_size,C,H,W).labels的shape为(batch_size,1)
在这里插入图片描述
对于图像分割或者关键点检测 我们都需要重写collate_fn.因为target是一个字典,传统的无法进行读取。
,因为读取的数据包括image和targets,不能直接使用默认的方法合成batch。

 def collate_fn(batch):imgs_tuple, targets_tuple = tuple(zip(*batch))imgs_tensor = torch.stack(imgs_tuple)return imgs_tensor, targets_tuple

3、图像增强

数据增强可以增加训练集的样本数量,缓解过拟合,并提高模型的泛化能力,从而有效提升算法的性能

图像预处理:
1、将图像转换成tensor 的数据格式
2、将图像的 像素值范围 由 0~255 转换为 0~1
3、(height, width, channel) =====>>>(channel, height, width)
4、归一化图像
归一化可以优化算法的收敛速度和性能,和 BN 层的作用差不多
归一化处理还可以消除不同图像之间的亮度和颜色差异,提高模型的鲁棒性。
在这里插入图片描述

4、重写transform

传统的transform接口 只能接受一个参数即图像本身。
重写transform的目的:可以接受多个参数,可以保证对我们的图像和标注进行同步处理,比如图像分类任务,如果我们对图像及进行了预处理,比如进行了图像裁剪和缩放以及旋转等,其对应的标注框也应该做同步变换,否则就会出错,这时候就需要我们重写transform,对图像和标注做同步处理。

比如:

class Compose(object):"""组合多个transform函数"""def __init__(self, transforms):self.transforms = transformsdef __call__(self, image, target):for t in self.transforms:image, target = t(image, target)return image, target

归一化只对图像做处理就好

class Normalize(object):def __init__(self, mean=None, std=None):self.mean = meanself.std = stddef __call__(self, image, target):image = F.normalize(image, mean=self.mean, std=self.std)return image, target

相关文章:

Dataset与DataLoader、transform

文章目录 1、Dataset2、DataLoader2.1 参数详解2.1.1 num_works2.1.2 pin_memory2.1.3 collate_fn 3、图像增强4、重写transform 1、Dataset 在 PyTorch 中,如果要创建自定义的数据集(Dataset),通常会继承 torch.utils.data.Data…...

海豚调度系列之:认识海豚调度

海豚调度系列之:认识海豚调度 一、海豚调度二、特性三、建议配置四、名次解释 一、海豚调度 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过…...

MateBook 14s 2023款 集显 触屏(HKFG-16)原厂Win11系统

HUAWEI华为MateBook14s笔记本电脑2023款原装Windows11,恢复出厂开箱状态系统下载 适用型号:HKFG-XX、HKFG-16、HKFG-32 链接:https://pan.baidu.com/s/1GBPLwucRiIup539Ms2ue0w?pwdfm41 提取码:fm41 原厂系统自带所有驱动、…...

zookeeper快速入门(合集)

zookeeper作为一个分布式协调框架,它的创建就是为了方便或者简化分布式应用的开发。除了服务注册与发现之外,它还能够提供更多的功能,但是对于入门来说,看这一篇就够了。后续会讲zookeeper的架构设计与原理,比如zookee…...

鸿蒙App开发学习 - TypeScript编程语言全面开发教程(上)

背景 根据鸿蒙官方的说明: ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前&#…...

Java语言: JVM

1.1 内存管理 1.1.1 JVM内存区域 编号 名字 功能 备注 1 堆 主要用于存放新创建的对象 (所有对象都在这里分配内存) jdk1.8之后永久代被替换成为了元空间(Metaspace) 2 方法区(加、常、静、即) 被虚拟机加载的类信息(版本、字段、方法、接口…...

下拉树级带搜索功能

可以直接复制粘贴到自己的项目里,方法处把接口替换一下 <template><div><el-popoverplacement"bottom"width"200"trigger"click"><el-inputslot"reference"class"mrInput":placeholder"placehol…...

【数组、字符串】算法例题

每个题的【方法1】是自己的思路&#xff0c;【其他方法】是力扣上更优的解题思路 目录 一、数组、字符串 1. 合并两个有序数组 ① 2. 移除元素 ① 3. 删除有序数组中的重复项 ① 4. 删除有序数组中的重复项 II ② 5. 多数元素 ① 6. 轮转数组 ② 7. 买卖股票的最佳时机…...

docxTemplater——从word模板生成docx文件

官网文档&#xff1a;Get Started (Browser) | docxtemplater 官网在线演示&#xff1a;Demo of Docxtemplater with all modules active | docxtemplater 源码&#xff1a;https://github.com/open-xml-templating/docxtemplater 不仅可以处理word&#xff08;免费&#xf…...

Linux权限维持后门及应急响应

本次应急响应实验用kali和centos7来充当攻击机和靶机 kali&#xff1a;192.168.10.130 centos7&#xff1a;192.168.10.155 前提&#xff1a; 用kali连接到centos7上面ssh root192.168.10.155 一、SSH软链接 任意密码登录即可发现程度&#xff1a;|||||| ln -sf /usr/sbi…...

git相关指令

1、使用 Git 初始化本地仓库&#xff1a; 在命令行中&#xff0c;首先进入你的项目目录&#xff0c;然后使用以下命令初始化一个本地 Git 仓库&#xff1a; git init2、添加文件到本地仓库&#xff1a; 将你的项目文件添加到本地仓库中&#xff0c;使用以下命令&#xff1a; …...

Apache Doris 2.1 核心特性 Variant 数据类型技术深度解析

在最新发布的 Apache Doris 2.1 新版本中&#xff0c;我们引入了全新的数据类型 Variant&#xff0c;对半结构化数据分析能力进行了全面增强。无需提前在表结构中定义具体的列&#xff0c;彻底改变了 Doris 过去基于 String、JSONB 等行存类型的存储和查询方式。为了让大家快速…...

accessToken

1、介绍 accessToken&#xff0c;通常是用于身份验证和授权的令牌,它可以用于前端和后端&#xff0c;具体使用方式取决于应用程序的架构和需求。 前端应用 accessToken通常用于向后端API发送请求时进行身份验证和授权。 &#xff08;1&#xff09;前端应用程序会在用户登录成…...

nodeJs 学习

常用快捷键 二、fs模块 回调函数为空&#xff0c;则表示写入成功&#xff01; 练习 const fs require(fs); fs.readFile(../files/成绩.txt, utf-8, (err, dataStr) > {if (err) {console.log(读取失败);return err;}console.log(读取成功);const arr dataStr.split( )co…...

STM32利用AES加密数据、解密数据

STM32利用AES加密数据、解密数据 MD5在线工具Chapter1 STM32利用AES加密数据、解密数据一、头文件二、源文件三、使用 Chapter2 stm32 的 md5计算函数Chapter3 STM32 应用程序加密的一种设计方案前言一、计算AppKey二、自动配置流程三、出厂固件合并 个人总结 MD5在线工具 htt…...

C语言技能数(知识点汇总)

C语言技能数&#xff08;知识点汇总&#xff09; C 语言概述特点不足之处 标准编程机制 数据类型变量数据类型字符类型整数类型符号位二进制的原码、反码和补码 浮点类型布尔类型 常量字面常量const 修饰的常变量#define定义的标识符常量枚举常量 sizeofsizeof(结构体)不要对 v…...

Vue.js+SpringBoot开发企业项目合同信息系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合同签订模块2.4 合同预警模块2.5 数据可视化模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 合同审批表3.2.2 合同签订表3.2.3 合同预警表 四、系统展示五、核心代码5.1 查询合同…...

Linux Shell中的echo命令详解

Linux Shell中的echo命令详解 在Linux Shell中&#xff0c;echo命令是一个常用的内置命令&#xff0c;用于在终端上显示文本或字符串。它主要用于显示变量的值&#xff0c;创建文件的内容&#xff0c;或者简单地输出一些信息。在本文中&#xff0c;我们将详细探讨echo命令的用…...

php 页面中下载文件|图片

一、需求 页面中点击下载图片 二、实现 protected function pageLoad(){$filePath $_GET[file];$host $_SERVER[HTTP_HOST];$file http://.$host.$filePath;$fileName basename($filePath);$content file_get_contents($file);ob_clean();$suffixArr explode(., $file…...

2024年企业经济管理与大数据国际会议(ICEEMBD 2024)

2024年企业经济管理与大数据国际会议&#xff08;ICEEMBD 2024&#xff09; 2024 International Conference on Enterprise Economic Management and Big Data 会议简介&#xff1a; 大数据分析在经济管理中发挥着至关重要的作用&#xff0c;它不仅能够提高决策效率和准确性…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...