PyTorch加载数据以及Tensorboard的使用

一、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,运行后重新生成了一个单张图片:
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Flutter】黑白图片

一、将图片处理成黑白图片 //第一种方法CachedNetworkImage(imageUrl: imageUrl,width: 80,height: 80,fit: BoxFit.cover,color: Colors.black,//目标颜色colorBlendMode: BlendMode.color,//颜色混合模式)//第二种方法ShaderMask(shaderCallback: (Rect bounds) {return Lin…

【Pika Labs】图片想法转视频-使用教程

关于Pika Labs 通过Pika Labs,可将你的想法转化为视频,将您的创造力付诸实践。 链接: Pika 登录Pika Labs 你可以通过Pika官方主页链接: Pika或者是Diacord社区邀请链接Discord Pika 进入Pika 社区。 接受邀请,按需回答完例行提问&#…

Python如何生成随机图形验证码

python生成随机图形验证码 使用python生成随机图片验证码,需要使用pillow模块 1.安装pillow模块 pip install pillow 2.pillow模块的基本使用 1.创建图片 from PIL import Image #定义使用Image类实例化一个长为400px,宽为400px,基于RGB的(255,255,255)颜色的图片 img1Ima…

「微服务模式」七种微服务反模式

什么是微服务 流行语经常为进化的概念提供背景,并且需要一个良好的“标签”来促进对话。微服务是一个新的“标签”,它定义了我个人一直在发现和使用的领域。文章和会议描述了一些事情,我慢慢意识到,过去几年我一直在发展自己的个人…

Ubuntu 常用命令之 du 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 Ubuntu系统下的du命令是一个用来估计和显示文件和目录所占用的磁盘空间的命令。du是“disk usage”的缩写,这个命令可以帮助用户了解磁盘被哪些文件和目录使用。 du命令的常见参数有 -a:列出所有文件和目…

如何在PC上运行大模型

如何在PC上运行大模型 在PC上使用CPU运行大模型不如使用GPU高效,但仍然是可以实现的大模型推理。 大模型训练要求的资源更高,这里直接使用面向开源的Facebook’s LLaMA model(llama-2-7b-chat.Q2_K.gguf)。 连接CPU与LLaMA model的是llama.cpp。 为方便…

2016年第五届数学建模国际赛小美赛C题对超级细菌的战争解题全过程文档及程序

2016年第五届数学建模国际赛小美赛 C题 对超级细菌的战争 原题再现: 最近有很多关于我们抗生素耐药性危机的讨论。进化出的能够抵抗抗生素的细菌每年杀死70万人,越来越强大的细菌正在世界各地传播。研究人员担心,我们将进入一个后抗生素时代…

【大模型实践】基于文心一言的对话模型设计

文心一言(英文名:ERNIE Bot)是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动、回答问题、协助创作,高效便捷地帮助人们获取信息、知识和灵感。文心一言从数万亿数据和数千亿知识…

IntelliJ IDEA 2023.3 新功能介绍

IntelliJ IDEA 2023.3 在众多领域进行了全面的改进,引入了许多令人期待的功能和增强体验。以下是该版本的一些关键亮点: IntelliJ IDEA mac版下载 macappbox.com/a/intellij-idea-for-mac.html 1. AI Assistant 的全面推出 IntelliJ IDEA 2023.3 中&am…

EarMaster Pro 7 简体中文破解版 v7.2.0.42 电脑版

软件介绍 EarMaster破解版一款功能强大的专业级别多媒体音乐教育学习软件,EarMaster破解版提供了大量音乐相关的学习内容,用户在这里可以学习基础的和弦、音阶、节奏,也可以提升自己的音感,如果基础已经很扎实了,还可…

kali-钓鱼网站远程代码漏洞分析

文章目录 一、靶场搭建二、开始信息收集,寻找漏洞三、使用蚁剑连接后门程序四、使用webshell查看数据库信息五、进入网站后台 实验环境 Kali CentOs 一、靶场搭建 CentOsIP地址192.168.64.159 #关闭centos防火墙 [rootlocalhost ~]# systemctl disable --now fi…

Unity头发飘动效果

Unity头发飘动 介绍动作做头发飘动头发骨骼绑定模拟物理组件 UnityChan插件下载UnityChan具体用法确定人物是否绑定好骨骼节点(要做的部位比如头发等)给人物添加SpringManager骨骼管理器给骨骼节点添加SpringBone这里给每个头发骨骼都添加上SpringBone。…

Linux学习教程(第十六章 Linux系统启动管理)二

第十六章 Linux系统启动管理(二) 九、Linux /boot/grub/目录分析 本章第一节就已经讲过,BIOS 在进行完成系统检测之后,就会找到第一个可以启动的设备,并读取该设备的 MBR(主引导记录)以及加载…

electron使用electron-builder进行MacOS的 打包、签名、公证、上架、自动更新

一、前言 由于electron在macOS下的坑太多,本文不可能把所有的问题都列出来,也不可能把所有的解决方案贴出来;本文也不太会讲解每一个配置点为什么要这么设置的原因,因为有些点我也说不清,我尽可能会说明的。所以&…

计算机的工作原理(上)

1. 计算机发展史 计算的需求在人类的历史中是广泛存在的,发展大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。(以下是计算机的发展历程) 1、公元前2500 年前,算盘已经出现了;除此之外&#xff0c…

Unity protobuf中repeated转C#文件List只读问题

Unity protobuf中repeated转C#文件List只读问题 介绍问题解决方案总结 介绍 工具这里我就不多介绍了,如果有用到ProtoGen工具的可以继续看一下我后面的方法。 问题 如下图所示,我这里随便用了一个.proto文件,看下我这里面的repeated标记的…

大一C语言作业题目1

目录 字符串和字符数组? %s found的变化: 7-1 学生成绩录入及查询 学生成绩表中,一名学生的信息包含如下信息: 学号(11位)、姓名、数学成绩、英语成绩、程序设计成绩、物理成绩。 本题要求编写程序,录入N条学生的…

【Amazon 实验②】使用缓存策略及源请求策略,用于控制边缘缓存的行为及回源行为

文章目录 1. 了解缓存策略和源请求策略1.1 使用缓存键和缓存策略 实验:使用CloudFront缓存策略和缓存键控制缓存行为 接上一篇文章【Amazon 实验①】使用 Amazon CloudFront加速Web内容分发,我们现在了解和配置如何使用缓存策略及源请求策略,…

NativePHP:使用 PHP 构建桌面应用程序

PHP 在我心中占据着特殊的位置。它是我的第一份工作,我记得我在家里花了无数个小时做一些小项目。我非常想用 PHP 创建桌面应用程序,但我从来没有做到过。 现在,感谢 NativePHP,我可以了。 NativePHP 追随 Slack、Discord 和 Tre…

trino-435版本windows下源码编译

一、源码下载地址 https://github.com/trinodb/trino/tags 二、编译环境及工具准备 1、maven &#xff08;1&#xff09;版本&#xff1a;3.6.3 &#xff08;2&#xff09;settings.xml配置 <?xml version"1.0" encoding"UTF-8"?> <settin…