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

Pytorch公共数据集、tensorboard、DataLoader使用

本文将主要介绍torchvision.datasets的使用,并以CIFAR-10为例进行介绍,对可视化工具tensorboard进行介绍,包括安装,使用,可视化过程等,最后介绍DataLoader的使用。希望对你有帮助

Pytorch公共数据集

torchvision.datasets.*
在这里插入图片描述
torchvision是pytorch的一个图形库,torchvision包由流行的数据集、模型架构和计算机视觉的通用图像转换组成。例如tensorboard、transfroms

在这里将主要介绍torchvision.datasets.*

在这里插入图片描述

在datasets中包含了许多公共的应用于图像领域的数据集。包含:图像分类、图像检测或分割、光流法、立体声匹配等

在本章当中,将以图像分类领域的CIFAR10数据集作为torchvision.datasets的例子进行介绍,因为他比较小,下载比较快。

CIFAR-10是一个更接近普适物体的彩色图像数据集。CIFAR-10 是由Hinton 的学生Alex Krizhevsky 和Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含10 个类别的RGB 彩色图片。

每个图片的尺寸为32 × 32 ,每个类别有6000个图像,数据集中一共有50000 张训练图片和10000 张测试图片。

下面是数据集中的类,以及每个类的10张随机图像

在这里插入图片描述

参数介绍

这些数据集的参数也是大同小异,由于CIFAR10数据集较小,下载就快。大家可以触类旁通

在这里插入图片描述

  • root :即指定数据集要下载在哪一个文件夹里面
  • train(bool):如果True即为训练集,否则False则为测试集
  • transform :进行图像变换的各种操作,如Resize、RandomCrop、Compose
  • target_transform :对于标签进行transform 操作
  • download :是否下载数据集,建议设置为True即可
import torch
import torchvision
from torch.utils.data import Dataset
from torch.utils.tensorboard import SummaryWriter
#transform属性
trans_tool = torchvision.transforms.Compose([torchvision.transforms.ToTensor()  # 转为Tensor类型# torchvision.transforms.Resize((5, 5))  # 进行大小裁剪
])# 数据集划分
tran_dataset = torchvision.datasets.CIFAR10(root="./dataset",train=True,transform=trans_tool,download=True)
test_dataset = torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=trans_tool,download=True)
print(tran_dataset[0])  
#Tensorboard
writer = SummaryWriter("logs")
for i in range(10):#显示测试集前10的图片img, label = tran_dataset[i]writer.add_image("CIFAR10",img,i)
writer.close()
Files already downloaded and verified
Files already downloaded and verified
(tensor([[[0.2314, 0.1686, 0.1961,  ..., 0.6196, 0.5961, 0.5804],[0.0627, 0.0000, 0.0706,  ..., 0.4824, 0.4667, 0.4784],[0.0980, 0.0627, 0.1922,  ..., 0.4627, 0.4706, 0.4275],...,[0.8157, 0.7882, 0.7765,  ..., 0.6275, 0.2196, 0.2078],[0.7059, 0.6784, 0.7294,  ..., 0.7216, 0.3804, 0.3255],[0.6941, 0.6588, 0.7020,  ..., 0.8471, 0.5922, 0.4824]],[[0.2431, 0.1804, 0.1882,  ..., 0.5176, 0.4902, 0.4863],[0.0784, 0.0000, 0.0314,  ..., 0.3451, 0.3255, 0.3412],[0.0941, 0.0275, 0.1059,  ..., 0.3294, 0.3294, 0.2863],...,[0.6667, 0.6000, 0.6314,  ..., 0.5216, 0.1216, 0.1333],[0.5451, 0.4824, 0.5647,  ..., 0.5804, 0.2431, 0.2078],[0.5647, 0.5059, 0.5569,  ..., 0.7216, 0.4627, 0.3608]],[[0.2471, 0.1765, 0.1686,  ..., 0.4235, 0.4000, 0.4039],[0.0784, 0.0000, 0.0000,  ..., 0.2157, 0.1961, 0.2235],[0.0824, 0.0000, 0.0314,  ..., 0.1961, 0.1961, 0.1647],...,[0.3765, 0.1333, 0.1020,  ..., 0.2745, 0.0275, 0.0784],[0.3765, 0.1647, 0.1176,  ..., 0.3686, 0.1333, 0.1333],[0.4549, 0.3686, 0.3412,  ..., 0.5490, 0.3294, 0.2824]]]), 6)

利用tensorboard查看,在控制台输入即可:

tensorboard --logdir 目录

在这里插入图片描述

关于torchvision.datasets.CIFAR10介绍已经讲解完毕,后续内容为扩展内容,包括:tensorboard、DataLoader的使用

tensorboard可视化工具

torch.utils.tensorboard

在Pytorch发布后,网络及训练过程的可视化工具也相应地被开发出来,方便用户监督所建立模型的结构和训练过程

深度学习网络通常具有很深的层次结构,而且层与层之间通常会有并联、串联等连接方式,利用有效的工具将建立的深度学习网络结构有层次化的展示,这就需要使用相关的深度学习网络结构可视化库。

从Pytorch1.1之后,加入了tensorboard

一般安装新版的pytorch会自动安装,如果没安装,则在终端命令行下使用下面命令即可安装

pip install tensorboard
  • add_image()添加图片

  • add_scalar()添加标量数据

主要代码如下

from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs")  # 创建SummaryWriter,将运行结果存logs文件夹中
for i in range(100):writer.add_scalar("y=2x",2*i,i)  # 第一个参数相当于标题,第二个参数就相当于纵坐标的值,第三个参数就相当于横坐标的值
writer.close()

可视化操作

在终端输入:tensorboard --logdir 目录
在这里插入图片描述

访问:http://localhost:6006即可

在这里插入图片描述

writer.add_image的例子

from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriterimg_path = r"./pic.png"
# 打开一张图片
img = Image.open(img_path)
# 使用transforms对图像进行变换
# 实例化totensor对象
to_tens = transforms.ToTensor()
# 将pic变成Tensor类型的图片
tens_img = to_tens(img) # 自动调用call函数
#print(tens_img)# 使用上一篇文章中tensorboard进行查看
writer = SummaryWriter("transforms_logs")
writer.add_image("test_transforms",tens_img) # 标题,图像类型
writer.close()

DataLoader的使用

from torch.utils.data import DataLoader

torch的DataLoader主要是用来装载数据,就是给定已知的数据集,把数据集装载进DataLoaer,然后送入深度学习网络进行训练。

在torch.utils.data.DataLoader()参数中,只有dataset为必填参数,其他的均有默认值,下文介绍几个重要的参数

在这里插入图片描述

  • dataset:表示要读取的数据集

  • batch_size:表示每次从数据集中取多少个数据

  • shuffle:表示是否为乱序取出,True表示前后不一样

  • num_workers :表示是否多进程读取数据(默认为0);

  • drop_last : 表示当样本数不能被batchsize整除时(即总数据集/batch_size 不能除尽,有余数时),最后一批数据(余数)是否舍弃(default:
    False)

  • pin_memory: 如果为True会将数据放置到GPU上去(默认为false)

还是以上文的CIFAR10的测试集为例

from torch.utils.data import DataLoader
import torchvision
test_set = torchvision.datasets.CIFAR10("dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)
Files already downloaded and verified
# 创建DataLoader实例
test_loader = DataLoader(dataset=test_set, # 引入数据集batch_size=4, # 每次取4个数据shuffle=True, # 打乱顺序num_workers=0, # 非多进程drop_last=False # 最后数据(余数)不舍弃
)

利用DataLoader的完整代码如下

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter# 准备测试集
test_set = torchvision.datasets.CIFAR10("dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)# 创建test_loader实例
test_loader = DataLoader(dataset=test_set, # 引入数据集batch_size=4, # 每次取4个数据shuffle=True, # 打乱顺序num_workers=0, # 非多进程drop_last=False # 最后数据(余数)不舍弃
)img,index = test_set[0]
print(img.shape) # 查看图片大小 torch.Size([3, 32, 32]) C h w,即三通道 32*32
print(index) # 查看图片标签
# 遍历test_loader
for data in test_loader:img,target = dataprint(img.shape) # 查看图片信息torch.Size([4, 3, 32, 32])表示一次4张图片,图片为3通道RGB,大小为32*32print(target)  # tensor([4, 9, 8, 8])表示4张图片的target
# 在tensorboard 中显示
writer = SummaryWriter("logs")
step = 0
for data in test_loader:img, target = datawriter.add_images("test_loader",img,step)step = step+1
writer.close()

tensorboard显示如下

在这里插入图片描述

相关文章:

Pytorch公共数据集、tensorboard、DataLoader使用

本文将主要介绍torchvision.datasets的使用,并以CIFAR-10为例进行介绍,对可视化工具tensorboard进行介绍,包括安装,使用,可视化过程等,最后介绍DataLoader的使用。希望对你有帮助 Pytorch公共数据集 torc…...

【第三天】C++类和对象进阶指南:从堆区空间操作到友元的深度掌握

一、new和delete 堆区空间操作 1、new和delete操作基本类型的空间 new与C语言中malloc、delete和C语言中free 作用基本相同 区别: new 不用强制类型转换 new在申请空间的时候可以 初始化空间内容 2、 new申请基本类型的数组 3、new和delete操作类的空间 4、new申请…...

【PyTorch实战演练】自调整学习率实例应用(附代码)

目录 0. 前言 1. 自调整学习率的常用方法 1.1 ExponentialLR 指数衰减方法 1.2 CosineAnnealingLR 余弦退火方法 1.3 ChainedScheduler 链式方法 2. 实例说明 3. 结果说明 3.1 余弦退火法训练过程 3.2 指数衰减法训练过程 3.3 恒定学习率训练过程 3.4 结果解读 4. …...

app拉新渠道整合 一手地推、网推拉新平台整理

1.聚量推客 聚量推客自己本身是服务商,自己直营的平台,相对来说数据更好,我们也拿到了平台首码:000000 填这个就行,属于官方渠道 2.蓝猫推客 蓝猫推客我认为是比较又潜力的平台,经过几天测试数据和结算都…...

十六进制IP转换点分十进制代码

以下是一个可以实现将输入的十六进制格式的IP地址转换为点分十进制格式并输出的简单程序。它使用了 sscanf 函数将输入的字符串解析成无符号整数&#xff0c;然后使用 inet_ntoa 函数将其转换成点分十进制格式&#xff0c;并打印输出&#xff1a; #include <stdio.h> #i…...

面试官的一句话,让五年功能测试老手彻夜难眠!

小王是一名软件测试工程师&#xff0c;已经在目前的公司做了四五年的功能测试。虽然一直表现得非常努力&#xff0c;但他还是没能躲过裁员。只能被动跳槽&#xff0c;寻找更好的职业机会。 然而事情并没有像他想象中那样顺利。在多次面试中小王屡屡碰壁&#xff0c;被面试官吐槽…...

向量检索库Milvus架构及数据处理流程

文章目录 背景milvus想做的事milvus之前——向量检索的一些基础近似算法欧式距离余弦距离 常见向量索引1&#xff09; FLAT2&#xff09; Hash based3&#xff09; Tree based4&#xff09; 基于聚类的倒排5&#xff09; NSW&#xff08;Navigable Small World&#xff09;图 向…...

【华为路由器】配置企业通过5G链路接入Internet示例

场景介绍 5G Cellular接口是路由器用来实现5G技术的物理接口&#xff0c;它为用户提供了企业级的无线广域网接入服务&#xff0c;主要用于eMBB场景。与LTE相比&#xff0c;5G系统可以为企业用户提供更大带宽的无线广域接入服务。 路由器的5G功能&#xff0c;可以实现企业分支…...

python安装.whl文件

python --version https://www.lfd.uci.edu/~gohlke/pythonlibs/ 用CtrlF找需要安装的包 下载对应版本的whl python3.8 把下载好的whl放到安装路径下&#xff1a;C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\site-packages 并在该路径下打开cmd执行…...

Java方法调用动态绑定(多态性)详解

CONTENTS 1. 方法调用绑定2. 尝试重写Private方法3. 字段访问与静态方法的多态4. 构造器内部的多态方法行为 1. 方法调用绑定 我们首先来看下面这个例子&#xff1a; package com.yyj;enum Tone {LOW, MIDDLE, HIGH; }class Instrument {public void play(Tone t) {System.ou…...

【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 2/7部分-搭建TabBar

SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 2/7部分-搭建Tab…...

代码随想录第50天 | 84.柱状图中最大的矩形

84.柱状图中最大的矩形 //双指针 js中运行速度最快 var largestRectangleArea function(heights) {const len heights.length;const minLeftIndex new Array(len);const maxRigthIndex new Array(len);// 记录每个柱子 左边第一个小于该柱子的下标minLeftIndex[0] -1; //…...

深度学习---卷积神经网络

卷积神经网络概述 卷积神经网络是深度学习在计算机视觉领域的突破性成果。在计算机视觉领域。往往输入的图像都很大&#xff0c;使用全连接网络的话&#xff0c;计算的代价较高。另外图像也很难保留原有的特征&#xff0c;导致图像处理的准确率不高。 卷积神经网络&#xff0…...

Windows系统下安装CouchDB3.3.2教程

安装 前往CouchDB官网 官网点击download下载msi文件 双击该msi文件&#xff0c;一直下一步 创建个人account 设置cookie value 用于进行身份验证和授权。 愉快下载 点击OK 重启 启动 重启电脑后 打开浏览器并访问以下链接&#xff1a;http://127.0.0.1:5984/ 如果没有问…...

JavaScript基础知识(二)

JavaScript基础知识&#xff08;二&#xff09; 一、ES2015 基础语法1.变量2.常量3.模板字符串4.结构赋值 二、函数进阶1. 设置默认参数值2. 立即执行函数3. 闭包4. 箭头函数 三、面向对象1. 面向对象概述2. 基本概念3. 新语法 与 旧语法3.1 ES5 面向对象的知识ES5构造函数原型…...

SQL NULL Values(空值)

什么是SQL NULL值&#xff1f; SQL 中&#xff0c;NULL 用于表示缺失的值。数据表中的 NULL 值表示该值所处的字段为空。 具有NULL值的字段是没有值的字段。 如果表中的字段是可选的&#xff0c;则可以插入新记录或更新记录而不向该字段添加值。然后&#xff0c;该字段将被保存…...

云原生Docker网络管理

目录 Docker网络 Docker 网络实现原理 为容器创建端口映射 查看容器的输出和日志信息 Docker 的网络模式 查看docker网络列表 指定容器网络模式 网络模式详解 host模式 container模式 none模式 bridge模式 自定义网络 Docker网络 Docker 网络实现原理 Docker使用Lin…...

聊聊线程池的预热

序 本文主要研究一下线程池的预热 prestartCoreThread java/util/concurrent/ThreadPoolExecutor.java /*** Starts a core thread, causing it to idly wait for work. This* overrides the default policy of starting core threads only when* new tasks are executed. T…...

VueComponent的原型对象

一、prototype 每一个构造函数身上又有一个prototype指向其原型对象。 如果我们在控制台输入如下代码&#xff0c;就能看到Vue构造函数的信息&#xff0c;在他身上可以找到prototype属性&#xff0c;指向的是Vue原型对象&#xff1a; 二、__proto__ 通过构造函数创建的实例对…...

Redis不止能存储字符串,还有List、Set、Hash、Zset,用对了能给你带来哪些优势?

文章目录 &#x1f31f; Redis五大数据类型的应用场景&#x1f34a; 一、String&#x1f34a; 二、Hash&#x1f34a; 三、List&#x1f34a; 四、Set&#x1f34a; 五、Zset &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO…...

MinIO初始化报错`Invalid endPoint`全解析:从URL规范到调试技巧

1. 为什么你的MinIO客户端总是报Invalid endPoint错误&#xff1f; 最近在帮团队排查MinIO集成问题时&#xff0c;发现超过60%的初始化错误都源于endPoint配置不当。很多开发者习惯性复制浏览器地址栏的URL直接粘贴到代码里&#xff0c;结果运行时却收到冰冷的Invalid endPoint…...

别再只会调PID了!电机速度环PI参数整定,手把手教你用电流环带宽搞定高动态伺服

电机速度环PI参数整定的高阶实践&#xff1a;基于电流环带宽的动态优化 在工业伺服系统与高精度运动控制领域&#xff0c;电机速度环的响应特性直接决定了设备动态性能的上限。传统PID调参方法往往停留在试凑法层面&#xff0c;难以满足现代高速高精应用场景的需求。本文将揭示…...

Spring Boot Starter 自动加载机制

Spring Boot Starter 自动加载机制解析 Spring Boot以其"约定优于配置"的理念简化了Java开发&#xff0c;而Starter自动加载机制正是这一理念的核心体现。通过预定义的依赖组合与自动化配置&#xff0c;开发者无需手动编写繁琐的XML或注解配置即可快速集成功能模块。…...

GPT-6 Spud倒计时与技术前瞻:AGI前夜的最后冲刺

上一篇 AI Agent记忆系统工程实践&#xff1a;四层架构、Mem0与跨会话状态持久化全解 下一篇 智谱GLM-4-0414系列开源发布深度解析&#xff1a;国产大模型新标杆 摘要 2026年4月14日&#xff0c;OpenAI代号"Spud"&#xff08;土豆&#xff09;的下一代旗舰模型GPT-6…...

终极NG-ALAIN代码生成器使用指南:5分钟快速创建组件、服务和模块

终极NG-ALAIN代码生成器使用指南&#xff1a;5分钟快速创建组件、服务和模块 【免费下载链接】ng-alain NG-ZORRO admin panel front-end framework 项目地址: https://gitcode.com/gh_mirrors/ng/ng-alain NG-ALAIN是一个基于Ant Design的企业级中后台前端解决方案&…...

VLA 在微调之后,能遗忘到什么程度?上交CVPR‘26的工作给出了答案

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 戳我-> 领取自动驾驶近30个方向学习路线 作者 | Runhao Mao等 编辑 | 自动驾驶之心 本文只做学术分享&#xff0c;如有侵权&#xff0c;联系删文 >>自动驾驶前沿信息获取→自动驾驶之心知识星球 当自动驾驶技术逐…...

高精度智慧校园安防场景图像识别 校园安全预警系统 校园安防设备智能化识别 深度学习YOLO与校园数字化智能化应用第10393期

数据集 README一、数据集核心信息项目详情类别数量及中文名称9 类&#xff08;大型构件、门禁、应急门、一键报警、防撞设施、通讯工具、入侵检测、金属探测器、电视&#xff09;数据总量7000 条数据集格式YOLO 格式最重要应用价值1. 支撑校园安防场景下的目标检测算法训练&…...

GitHub中文化插件:如何让全球开发者平台真正属于中文用户?

GitHub中文化插件&#xff1a;如何让全球开发者平台真正属于中文用户&#xff1f; 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 对于…...

LeetCode 696. 计数二进制子串(详细解析 + 多解法实现)

LeetCode 696. 计数二进制子串&#xff08;详细解析 多解法实现&#xff09; 前言&#xff1a;LeetCode 696. 计数二进制子串是一道经典的字符串处理题目&#xff0c;难度中等&#xff0c;核心考察对字符串分组、规律提炼的能力。本题看似简单&#xff0c;但如果暴力求解会超…...

支付集成的优雅革命:Yansongda Pay 如何让多平台接入变得如此简单

支付集成的优雅革命&#xff1a;Yansongda Pay 如何让多平台接入变得如此简单 【免费下载链接】pay 可能是我用过的最优雅的 Alipay/WeChat/Douyin/Unipay/江苏银行 的支付 SDK 扩展包了 项目地址: https://gitcode.com/gh_mirrors/pa/pay 还在为支付宝、微信、抖音、银…...