PyTorch加载数据以及Tensorboard的使用

news2025/2/2 21:01:30

一、PyTorch加载数据初认识

Dataset:提供一种方式去获取数据及其label

如何获取每一个数据及其label
总共有多少的数据

Dataloader:为后面的网络提供不同的数据形式
数据集

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在编译器中导入Dataset

from torch.utils.data import Dataset

可以在jupyter中查看Dataset官方文档:

help(Dataset)

在这里插入图片描述
或者

Dataset??

在这里插入图片描述

二、Dataset类代码实战

将数据集复制到项目中,命名为dataset,右键拷贝路径。
在这里插入图片描述
在pycharm中的控制台运行:
在这里插入图片描述
(注意:粘贴完拷贝的路径后需要加上""表示转义字符,共有两个斜杠,否则会报错)
输入img.show()会展示出图片
在这里插入图片描述
获取每个图片的地址,创建图片地址列表:
(获得了文件夹的地址后。将文件夹里的数据〔所有照片的路径地址)存入列表里)
在这里插入图片描述
可以换成拼接图片路径:

import os
root_dir = "learn_pytorch/dataset/train"
label_dir = "ants"
path = os.path.join(root_dir, label_dir)

测试第一张图片

path = os.path.join(root_dir, label_dir)
img_path = os.listdir(path)  # 所有图片地址列表
idx = 0
img_name = img_path[idx]  # 第一张图片
img_item_path = os.path.join(root_dir, label_dir, img_name)  # 第一张图片地址

在这里插入图片描述
read_data.py

from torch.utils.data import Dataset
# import cv2
from PIL import Image
import os # 获取所有图片地址
class MyData(Dataset):
    def __init__(self, root_dir, label_dir):
        self.root_dir = root_dir
        self.label_dir = label_dir
        self.path = os.path.join(self.root_dir, self.label_dir)
        self.img_path = os.listdir(self.path)

    def __getitem__(self, idx):
        img_name = self.img_path[idx]
        img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)
        img = Image.open(img_item_path)
        label = self.label_dir
        return img, label

    def __len__(self):
        return len(self.img_path)


root_dir = "learn_pytorch/dataset/train"
ants_label_dir = "ants"
bees_label_dir = "bees"
ants_dataset = MyData(root_dir, ants_label_dir)
bees_dataset = MyData(root_dir, bees_label_dir)

train_dataset = ants_dataset + bees_dataset

将上述代码输入到控制台,然后进行测试:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、Tensorboard的使用

在编译器中导入

from torch.utils.tensorboard import SummaryWriter

SummaryWriter类使用

在pycharm中查看说明文档方法:可以直接按住ctrl键,点击类名
在这里插入图片描述
创建实例对象:

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
writer.add_image()
writer.add_scalar()
writer.close()

add_scalar()方法的使用

pycharm中ctrl+‘/’可以注释,注释掉writer.add_image()
add_scalar()方法:
在这里插入图片描述
测试:

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
# writer.add_image()
# y=x
for i in range(100):
    writer.add_scalar("y=x", i, i)
writer.close()

报错。没有安装Tensorboard
在这里插入图片描述

安装Tensorboard

在pycharm的Terminal中运行或在anaconda命令行中激活pytorch环境运行

pip install tensorboard

再次测试:
运行后生成了logs文件夹,里面是执行过的事件文件
在这里插入图片描述

打开事件文件

logdir=事件文件所在文件夹名

在Terminal中运行,点击链接即可:

 tensorboard --logdir=logs

在这里插入图片描述
在这里插入图片描述
上面是默认的端口,还可以指定端口:

 tensorboard --logdir=logs --port=6007

add_image()方法的使用

add_scalar()方法:
在这里插入图片描述
image的类型:
在这里插入图片描述
在pycharm工作台获取图片路径

image_path = "learn_pytorch/dataset/train/ants/0013035.jpg"

测试:

from PIL import Image
img = Image.open(image_path)
print(type(img))

在这里插入图片描述
PIL.JpegImagePlugin.JpegImageFile类型不满足要求。
利用numpy.array(),对PIL图片进行转换。
(另一种方法:利用Opencv读取图片,获得numpy型图片数据)

import numpy as np
img_array = np.array(img)
print(type(img_array))

在这里插入图片描述
从PIL到numpy,需要在add_image()中指定shape中每一个数字/维表示的含义,否则会报错。

from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image

writer = SummaryWriter("logs")
image_path = "learn_pytorch/dataset/train/ants/0013035.jpg"
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL)
print(type(img_array))
print(img_array.shape)

writer.add_image("test", img_array, 1, dataformats='HWC')
# y=2x
for i in range(100):
    writer.add_scalar("y=2x", 3*i, i)
writer.close()

运行结果:
在这里插入图片描述
点开tensorboard会显示出图片:
在这里插入图片描述
更改图片地址,换一张图片,并改成第二步:
在这里插入图片描述
运行后tensorboard中的图片变成俩个图片滑动变换。
在这里插入图片描述
更改tag,运行后重新生成了一个单张图片:
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

大型医院PACS系统源码,影像存储与传输系统源码,支持多种图像处理及三维重建功能

PACS系统是医院影像科室中应用的一种系统,主要用于获取、传输、存档和处理医学影像。它通过各种接口,如模拟、DICOM和网络,以数字化的方式将各种医学影像,如核磁共振、CT扫描、超声波等保存起来,并在需要时能够快速调取…

基于ssm+jsp学生综合测评管理系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把学生综合测评管理与现在网络相结合,利用java技术建设学生综合测评管理系统,实现学生综合测评的信息化。则对于进一步提高学生综合测评管理发展,丰富学生综合测评管理经验能起到不少的促进作用。…

「完美世界」石昊调戏清漪,告白欲以身相许,渡劫神莲淬炼肉身

Hello,小伙伴们,我是拾荒君。 《完美世界》第142集已经更新。石昊在齐道临赠予的令牌庇护下,成功潜入仙池,借助着他的重瞳,他发现那神秘的渡劫神莲正位于这仙池之中。然而,渡劫神莲的位置上空雷云翻滚,宛如…

明道云引领企业变革与创新

内容来自演讲:周万均 | 成都护园科技有限公司 | 总经理 摘要 本文主要讲述了作者从甲方转变为乙方的角色转变过程中,对明道云的应用和探索。在选择系统时,企业会考虑的一些因素,并强调了团队、时间、成本和沟通等因素在企业数字化…

视图的作用及可更改性详解

一、视图的定义与作用 1.1 视图的定义 视图是数据库中的一个虚拟表,它是基于一个或多个表的查询结果组成的,通过视图可以将复杂的查询、过滤条件和连接操作封装成一个虚拟表,使用户可以通过查询这个虚拟表来获取数据,而不必了解…

【C语言】指针详解(三)

1.指针运算 指针的基本运算有三种,分别是:⭐指针-整数 ⭐指针-指针 ⭐指针的关系运算 1.1指针 - 整数 因为数组在内存中是连续存放的,只要知道第一个元素的地址,顺藤摸瓜就能找到后面的所有元素。 int arr[10]{1,2,3,4,5,6,7,8,9,10} #inc…

机器学习 深度学习 神经网络

神经网络概念: 神经网络是一个由生物神经元组成的网络或电路,或者从现代意义上讲,是一个由人工神经元或节点组成的人工神经网络。因此,一个神经网络要么是由生物神经元组成的生物神经网络,要么是用于解决人工智能&…

多臂老虎机算法步骤

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

零基础制作宠物用品小程序

随着人们对宠物用品的需求不断增长,越来越多的人开始探索如何制作一个专业的宠物用品小程序。而乔拓云作为一款功能强大的在线商城制作工具,成为了许多商家的首选。本文将详细介绍如何使用乔拓云制作宠物用品小程序,让你轻松上手,…

VScode配置C环境

一、下载vscode https://code.visualstudio.com/ 安装完成 tips:如果不喜欢看英文,可以给VSCode进行汉化,需要安装插件Chinese,安装之后会显示让你重启VScode 二、安装C/C插件和Code Runner插件 三、下载minGw MinGW全称Minima…

TrustZone之示例用例——加密文件系统

移动设备如智能手机包含大量个人数据。如果设备丢失或被盗,用户会关心这些数据的机密性。这就是为什么大多数最新的设备支持文件系统加密的原因。TrustZone 可以作为保护这些数据的解决方案的一部分。 存储在外部闪存中的数据是加密的。在启动时,设备对用…

2024 Move 开发者大会火热报名中!1 月 13 至 14 日上海见

2024 Move 开发者大会将于 1 月 13 日至 1 月 14 日在上海举办。本届 Move 开发者大会以 “Move 生态关键的一年” 为主题,由 MoveFuns 、OpenBuild 和 MoveBit 主办,Rooch、AptosGlobal、alcove、zkMove、云赛空间和 TinTinLand 协办,并得到…

SpringBoot找不到或无法加载主类

1,bug贴图 2,问题说明 之所以导致这个问题是因为新建项目的时候,项目目录是这样的com.lab.hei.springboot.dubbo.ProviderApplication 我觉得这个目录太长了,所以修改了目录,修改后cn.alisa.springboot.dubbo.Provider…

【第七在线】商品计划的未来:数字化技术与创新趋势展望

在服装行业,商品计划是一项至关重要的活动,涉及到市场分析、库存管理、生产计划和销售策略等多个方面。然而,随着科技的快速发展和消费者需求的变化,商品计划也在不断演变。本文将深入探讨数字化技术和创新趋势如何塑造了商品计划…

从零学算法5

5.给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2&…

Drupal 远程代码执行 CVE-2019-6340 已亲自复现

Drupal 远程代码执行 CVE-2019-6340 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建 修复建议总结 漏洞名称 漏洞描述 Drupal是一个开源且以PHP语言写成的内容管理框架(CMF) 研究人员发现Drupal存在安全漏洞(CVE-2019-6340),当攻击者以PATCH或POST方式传送…

【数据结构】什么是树?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 📌树的定义 树(Tree)是n(n≥0)个结点的有限集.n0时称为空树. 在任意一颗非空树中: 有且仅有一个特定的称为根(Root)的结点;当n>1时,其余结点可分为m(m>0)个互…

flutter开发实战-设置bottomNavigationBar中间按钮悬浮效果

flutter开发实战-设置bottomNavigationBar中间按钮悬浮的效果 在使用tabbar时候,可以使用bottomNavigationBar来设置中间凸起的按钮,如下 一、效果图 中间按钮凸起的效果图如下 二、实现代码 我们使用BottomAppBar 一个容器,通常与[Sscaf…

AcWing算法提高课-1.4.2股票买卖 IV

算法提高课整理 CSDN个人主页:更好的阅读体验 原题链接 题目描述 给定一个长度为 n n n 的数组,数组中的第 i i i 个数字表示一个给定股票在第 i i i 天的价格。 设计一个算法来计算你所能获取的最大利润,你最多可以完成 k k k 笔交易…

百度网盘资源下载慢解决方法

1、使用百度网盘客户端,设置使用空闲带宽下载 亲测,可以一定程度上解决下载慢的问题,但是对于有些文件下载还是很慢就不清楚为什么了。 2、使用IDM进行下载 (1)、第一步下载和安装IDM 搜索后,普通下载后安…