Lnton羚通视频算法算力云平台【PyTorch】教程:学习Datasets-DataLoader基础知识

news2025/1/13 13:43:59

Dataset & DataLoader

PyTorch 提供了两个数据处理的基本方法:torch.utils.data.DataLoader torch.utils.data.Dataset 允许使用预加载的数据集以及自己的数据。 Dataset 存储样本及其对应的标签, DataLoader 在 Dataset 基础上封装了一个可迭代的对象,以方便访问样本。

PyTorch 提供了许多预加载的数据集(如 FashionMNIST ) 这些数据集继承了 torch.utils.data.Dataset 类,并实现了特定数据的函数。它们可以用来创建模型原型和基准测试。Image Datasets, Text Datasets, 和 Audio Datasets

Loading a Dataset (加载数据集)

下面是一个加载 FashionMNIST 数据集的例子。 FashionMNIST 数据集包含了 60000 个训练样本和 10000 个测试样本,每一个样本是 28*28 的灰度图像和对应标签(一共 10 个类别)。

import torch 
from torch.utils.data import DataLoader 
from torchvision import datasets 
from torchvision.transforms import ToTensor 
import matplotlib.pyplot as plt 

training_data = datasets.FashionMNIST(
    root="../../data",   # 存放数据的路径
    train=True,          # 是训练数据集还是测试数据集
    download=True,       # 如果存储的路径里没有数据集的话,就从网络下载数据集
    transform=ToTensor() # 数据转换
)

test_data = datasets.FashionMNIST(
    root = "../../data", # 存放数据的路径
    train=False,         # 是训练数据集还是测试数据集
    download=True,       # 如果存储的路径里没有数据集的话,就从网络下载数据集
    transform=ToTensor() # 数据转换
)

Iterating and Visualizing the Dataset (迭代和可视化数据集)

我们可以像索引列表一样对数据集进行索引,如 training_data[index], 使用 matplotlib 对数据进行可视化。

labels_map = {
    0: "T-Shirt",
    1: "Trouser",
    2: "Pullover",
    3: "Dress",
    4: "Coat",
    5: "Sandal",
    6: "Shirt",
    7: "Sneaker",
    8: "Bag",
    9: "Ankle Boot",
}

figure = plt.figure(figsize=(10, 10))
cols, rows = 3, 3
for i in range(1, rows * cols + 1):
    sample_idx = torch.randint(0, len(training_data), size=(1,)).item()
    img, label = training_data[sample_idx]
    figure.add_subplot(rows, cols, i)
    plt.title(labels_map[label])
    plt.axis("off")
    plt.imshow(img.numpy().reshape(28, 28), cmap="gray")
plt.show()

 Creating a Custom Dataset for your files (用自己的文件定制数据集)
一个定制的数据集需要实现 3 个函数: __init__, __len__, __getitem__。 FashionMNIST 图片存储在 img_dir 里,它们的标签存储在 CSV 标注文件里。
 

import os 
import numpy as np
import pandas as pd 
from torchvision.io import read_image

class CustomImageDataset(Dataset):
    def __init__(self, annotations_file, img_dir, transform=None, target_transform=None):
        self.img_labels = pd.read_csv(annotations_file)
        self.img_dir = img_dir
        self.transform = transform
        self.target_transform = target_transform

    def __len__(self):
        return len(self.img_labels)
  
    def __getitem(self, idx):
        img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0])
        image = read_image(img_path)
        label = self.img_labels.iloc[idx, 1]
        if self.transform:
            image = self.transform(image)
        if self.target_transform:
            label = self.target_transform(label)
        return image, label

__init__

当实例化 Dataset 对象时,__init__ 函数执行一次,需要包括包含图片和标注文件的路径,以及它们是否需要转换。

labels.csv 文件结构如下:

tshirt1.jpg, 0
tshirt2.jpg, 0
......
ankleboot999.jpg, 9

_len__

__len__ 函数返回数据中样本数量。

__getitem__

__getitem__函数从给定索引 idx 处的数据集中加载并返回一个样本。基于索引,它识别图像在磁盘上的位置,使用 read_image 将其转换为一个 tensor ,从 csv 数据中提取对应的标签,调用它们上的变换函数(如果适用),并在元组中返回 tensor 图像和相应的标签。
Lnton 羚通是专注于音视频算法、算力、云平台的高科技人工智能企业。 公司基于视频分析技术、视频智能传输技术、远程监测技术以及智能语音融合技术等, 拥有多款可支持 ONVIF、RTSP、GB/T28181 等多协议、多路数的音视频智能分析服务器 / 云平台。

 

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

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

相关文章

苍穹外卖 day3 实现登录过程中MD5加密

一 原来是明文存的 密码可见度太高,MD5加密为密文图像 效果 二 密文实现步骤 修改明文密码,改成密文 123456 密文值:e10adc3949ba59abbe56e057f20f883e代码如下所示 在这里插入代码片 package com.sky.service.impl;import com.sky.con…

[bug日志]springboot多模块启动,在yml配置启动端口8081,但还是启动了8080

【问题描述】 配置的启动端口是8081,实际启动端口是8080 【解决方法】 1.检查application.yml的配置是否有错误(配置项中,显示白色就错,橙色无措) 2.检查pom.xml的打包方式配置项配置,主pom.xml中的配置项一般为:&l…

司徒理财:8.23黄金最新行情走势分析及操作策略

黄金走势分析:      黄金下跌遇阻,短线开启震荡调整走势,但跌势依旧没有改变,没有突破1906压力前,还是偏空走势,反弹继续干空。趋势行情,不要轻言翻转!即便下跌结束,…

DB2的日志

在DB2中,该机制使用日志功能实现。所谓日志,可以被认为在一条事务被落实之前,能够保证其记录被写入永久存储系统的一种方法。 那么为什么需要日志呢?直接把变化的数据写入磁盘不是更好?之所以需要日志,主要…

芯科科技宣布推出下一代暨第三代无线开发平台,打造更智能、更高效的物联网

第三代平台中的人工智能/机器学习引擎可将性能提升100倍以上 Simplicity Studio 6软件开发工具包通过新的开发环境将开发人员带向第三代平台 中国,北京 - 2023年8月22日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs&…

基于IDEA使用maven创建hibernate项目

1、创建maven项目 2、导入hibernate需要的jar包 <!--hibernate核心依赖--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.4.1.Final</version></dependency><!--…

微信小程序:页面有内容却不显示原因

先检查&#xff0c;app.json中这两项路径是否正确 如果正确的话&#xff0c;不显示的那个页面的。js文件中需要Page({})&#xff0c;初始化&#xff0c;这个必须有&#xff1b; 如果还是不出现&#xff0c;可以先把路径删掉&#xff0c;然后刷新一下&#xff0c;这个时候会提示…

ctfshow web入门 web103-web107

1.web103 和102一样 payload: v2115044383959474e6864434171594473&v3php://filter/writeconvert.base64-decode/resource1.php post v1hex2bin2.web104 值只要一样就可以了 payload: v21 post v113.web105 考查的是$$变量覆盖,die可以带出数据,输出一条消息&#xf…

C++信息学奥赛1133:输出亲朋字符串

#include <iostream> #include <string> using namespace std;int main() {string n;cin >> n; // 输入字符串for (int i 0; i < n.length(); i){char Front n[i]; // 当前字符char rear n[i 1]; // 下一个字符if (i n.length() - 1){rear n[0];…

激进的现货白银技巧

在现货白银投资中&#xff0c;我们有保守的交易技巧&#xff0c;也有激进的交易技巧&#xff0c;这给了投资者有进退的选择。其实很多投资者认为贵金属的投资只能长期持有&#xff0c;等待升值&#xff0c;确实有部分投资者是这么做的。但是其实现货白银投资还是有非常激进的一…

这样处理 Python 日志,优雅

迷途小书童的Note 读完需要 4分钟 速读仅需 2 分钟 1 loguru 简介 loguru 是 Python 的一个第三方日志模块&#xff0c;相较于标准库 logging 模块&#xff0c;它提供了更简洁易用的 API&#xff0c;内置丰富的格式化、过滤、文件输出等高级功能。loguru 让 Python 日志记录变得…

HTML5岗位技能实训室建设方案

一 、系统概述 HTML5岗位技能技术是计算机类专业重要的核心课程&#xff0c;课程所包含的教学内容多&#xff0c;实践性强&#xff0c;并且相关技术更新快。传统的课堂讲授模式以教师为中心&#xff0c;学生被动式接收&#xff0c;难以调动学生学习的积极性和主动性。混合式教学…

Maven生命周期、阶段与目标

生命周期 对于Java项目来说&#xff0c;一个项目的生命周期可能会有创建项目、编译、打包、运行、部署等&#xff0c;而maven将项目的生命周期进行了标准化。 Maven默认支持的生命周期有clean、site、default&#xff0c;其中 site这个生命周期几乎用不到&#xff0c;最常用的…

Unity 图片资源的适配

前言 最近小编做Unity项目时&#xff0c;发现在资源处理这方面和Android有所不同&#xff1b;例如&#xff1a;Android的资源文件夹res下会有着mipmap-mdpi&#xff0c;mipmap-hdpi&#xff0c;mipmap-xhdpi&#xff0c;mipmap-xxhdpi&#xff0c;mipmap-xxxhdpi这五个文件夹&a…

java八股文面试[java基础]——Object类有哪些方法

通过IDEA打开Object类就可以看到 &#xff08;1&#xff09;clone方法 保护方法&#xff0c;实现对象的浅复制&#xff0c;只有实现了Cloneable接口才可以调用该方法&#xff0c;否则抛出CloneNotSupportedException异常。 主要是JAVA里除了8种基本类型传参数是值传递&#xf…

什么是缓存雪崩,什么是缓存穿透,什么是缓存击穿,如何解决 ?

目录 1. 什么是缓存雪崩&#xff1f;如何解决 &#xff1f; 2. 什么是缓存穿透&#xff1f;如何解决 &#xff1f; 3. 什么是缓存击穿&#xff1f;如何解决 &#xff1f; 1. 什么是缓存雪崩&#xff1f;如何解决 &#xff1f; 缓存雪崩是指在短时间内&#xff0c;有大量的缓存…

3D姿态相关的损失函数

loss_mpjpe: 计算预测3D关键点与真值之间的平均距离误差(MPJPE)。 loss_n_mpjpe: 计算去除尺度后预测3D关键点误差(N-MPJPE),评估结构误差。 loss_velocity: 计算3D关键点的速度/移动的误差,评估运动的平滑程度。 loss_limb_var: 计算肢体长度的方差,引导生成合理的肢体长度…

SpeedBI数据可视化工具:丰富图表,提高报表易读性

数据可视化工具一大作用就是能把复杂数据可视化、直观化&#xff0c;更容易看懂&#xff0c;也就更容易实现以数据驱动业务管理升级&#xff0c;因此一般的数据可视化工具都会提供大量图形化的数据可视化图表&#xff0c;以提高报表的易懂性&#xff0c;更好地服务企业运营决策…

AUTBUS全球首发,东土与您相约工博会

2023年中国国际工业博览会将于9月19日至9月23日在上海盛大举办。作为工博会重点参展企业之一&#xff0c;东土科技将重磅亮相6.1号馆工业自动化展&#xff08;展位号&#xff1a;6.1H-D137&#xff09;。 值得一提的是&#xff0c;AUTBUS 国际标准作为全球第一个基于时间敏感网…

微信开发之一键修改群公告的技术实现

简要描述&#xff1a; 设置群公告 请求URL&#xff1a; http://域名地址/setChatRoomAnnouncement 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必…