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_dirself.label_dir = label_dirself.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_dirreturn img, labeldef __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 Imagewriter = 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.mzph.cn/news/239873.shtml

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

相关文章

confluence操作手册

文章目录 快捷键插入宏插入代码块 自动为标题编号使用方法: 移动页面到其它目录层级下 快捷键 插入宏 英文输入法下输入{ 插入代码块 输入三个会跳出 点编辑可以调整样式 自动为标题编号 安装插件Numbered Headings 下载链接:https://appfire.…

微服务 Spring Cloud 10,如何追踪微服务调用?服务治理的常见手段

目录 一、服务追踪的作用1、优化系统瓶颈2、优化链路调用3、故障排查4、性能优化5、生成网络拓扑图4、透明传输数据 二、节点管理1、服务调用失败一般有两类原因造成:2、服务调用失败的解决方式:3、服务调用失败的具体解决方式: 三、负载均衡…

ansible的控制语句

本章内容主要介绍 playbook 中的控制语句 使用when判断语句block-rescue判断循环语句 一个play中可以包含多个task,如果不想所有的task全部执行,可以设置只有满足某个条件才执行这个task,不满足条件则不执行此task。本章主要讲解when 和 blo…

Epson爱普生手臂机器人与PC通讯 C#

一、Epson手臂配置 1.安装Epson手臂控制软件 安装Epson手臂控制软体EPSON RC+ 7.0(根据实际需求下载应用),可以去官网下载安装。 2.硬件配置 准备一台PC,用网线连接PC和EPSON手臂控制器。 3.在PC上修改IP地址 EPSON手臂默认IP(192.168.0.1),PC IP改为手臂同一网段…

XML简介 (EXtensible Markup Language)

XML简介 (EXtensible Markup Language) 可扩展标记语言 特点 XML与操作系统、编程语言的开发平台无关实现不同系统之间的数据交换 作用 数据交互配置应用程序和网站Ajax基石 XML标签 XML文档内容由一系列标签元素组成 <元素名 属性名"属性值">元素内容&l…

【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《模式之谜 | 数据奇迹解码》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 目录 &#x1f30c;1 初识模式识…

如何通过蓝牙串口启动智能物联网?

1、低功耗蓝牙(BLE)介绍 BLE 技术是一种低成本、短距离、可互操作的鲁棒性无线技术&#xff0c;工作在免许可的 2,4 GHZ 工业、科学、医学(Industrial Scientific Medical&#xff0c;ISM)频段。BLE在设计之初便被定位为一种超低功耗(Ultra Low Power&#xff0c;ULP)无线技术&…

C语言实现UCS2、UTF8与GBK2312编码转换

一、引言 在软件开发中&#xff0c;字符编码是一个非常重要的概念。不同的编码方式用于在不同的系统和应用中表示文本数据。UCS2、UTF8和GBK2312是三种常见的字符编码方式。为了实现不同编码间的转换&#xff0c;我们可以使用C语言进行编程&#xff0c;利用已有的库或者手动实…

浅谈Guava Cache的参数使用

CacheLoader 用于数据加载方式比较固定且统一的场景&#xff0c;在缓存容器创建的时候就需要指定此具体的加载逻辑。通常开发中使用时我们需要继承CacheLoader类或写一个匿名实现类实现其load方法和reload方法 load方法 当执行get操作没有命中缓存或者判断缓存已经超出expir…

【Prometheus|报错】Out of bounds

【背景】进入Prometheus地址的9090端口&#xff0c;pushgateway&#xff08;0/1&#xff09;error : out of bounds 【排查分析】 1、out of bounds报错&#xff0c;是由于Prometheus向tsdb存数据出错&#xff0c;与最新存数据的时间序列有问题&#xff0c;有可能当前时间与最…

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

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

Ignite数据流处理

数据流处理 #1.概述 Ignite提供了一个数据流API&#xff0c;可用于将大量连续的数据流注入Ignite集群&#xff0c;数据流API支持容错和线性扩展&#xff0c;并为注入Ignite的数据提供了至少一次保证&#xff0c;这意味着每个条目至少会被处理一次。 数据通过与缓存关联的数据…

【Linux】归档和备份

简介 计算机系统管理员的一个主要任务就是保护系统的数据安全&#xff0c;其中一种方法是通过时时备份系 统文件&#xff0c;来保护数据。即使你不是一名系统管理员&#xff0c;也经常会处理大量文件&#xff0c;在这里我们看看常见的管理文件集合命令。 压缩命令&#xff1a…

基于Spring自动注入快速实现策略模式+工厂模式优化过多的if..else

一、策略模式 1.1策略模式定义 在策略模式&#xff08;Strategy Pattern&#xff09;中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式定义了一系列算法或策略&#xff0c;并将每个算法封装在独立的类中&#xff0c;使得它们可以互相…

web网页端使用webSocket实现语音通话功能(SpringBoot+VUE)

写在前面 最近在写一个web项目&#xff0c;需要实现web客户端之间的语音通话&#xff0c;期望能够借助webSocket全双工通信的方式来实现&#xff0c;但是网上没有发现可以正确使用的代码。网上能找到的一个代码使用之后只能听到“嘀嘀嘀”的杂音 解决方案&#xff1a;使用Jso…

中级软件设计师-note-3

又一个逆向思维的例子是“有两个年轻人&#xff0c;追同一个女孩子。第一个年轻人用了4000块&#xff1a;花3500块给女孩子买了一个手机&#xff0c;剩下的500块准备用作吃饭和玩的&#xff0c;然后他骑着共享单车去找女孩子&#xff0c;女孩子直接就给拒绝了&#xff0c;说&am…

算法练习Day19 (Leetcode/Python-二叉树)

108. Convert Sorted Array to Binary Search Tree Given an integer array nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree. 思路&#xff1a; 一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的…

RSA 加密方案

RSA 算法 RSA 加密和签名&#xff1a;因大整数因子分解难算&#xff0c;合数可成公钥。 d - 私钥&#xff0c;e - 公钥&#xff0c;n - 可公开的合数&#xff0c;(e,n) 作为公钥可以公开&#xff0c;(d,n) 作为私钥。 详细理论证明参考&#xff1a;RSA算法原理&#xff08;二…

3.[BUU]warmup_csaw_20161

1.checksec 检查文件类型 ELF-64-little &#xff0c;无其他限权&#xff0c;直接用ida检查代码。 2.IDA进行反编译&#xff0c;进行代码审计 查看各个名称的内容&#xff1a; 了解基本攻击思路&#xff1a; 攻击思路&#xff1a;gets输入垃圾数据覆盖v5内容&#xff0c;再将s…

51单片机的羽毛球计分器系统【含proteus仿真+程序+报告+原理图】

1、主要功能 该系统由AT89C51单片机LCD1602显示模块按键等模块构成。适用于羽毛球计分、乒乓球计分、篮球计分等相似项目。 可实现基本功能: 1、LCD1602液晶屏实时显示比赛信息 2、按键控制比赛的开始、暂停和结束&#xff0c;以及两位选手分数的加减。 本项目同时包含器件清…