Pytorch for training1——read data/image

blog

torch.utils.data.Dataset

  1. create dataset with class torch.utils.data.Dataset automaticly
import torch
from torch.utils.data import Datasetclass MyDataset(Dataset):def __init__(self, data):self.data = datadef __getitem__(self, index):# 根据索引获取样本return self.data[index]def __len__(self):# 返回数据集大小return len(self.data)# 创建数据集对象
data = [1, 2, 3, 4, 5]
dataset = MyDataset(data)# 根据索引获取样本
sample = dataset[2]
print(sample)

torchvision.datasets

  1. load data from classic dataset
import torch
from torchvision import datasets, transforms# 定义数据转换
transform = transforms.Compose([transforms.ToTensor(),  # 将图像转换为张量transforms.Normalize((0.5,), (0.5,))  # 标准化图像
])# 加载MNIST数据集
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)

2. load data from Imagefolder with transform

from torchvision import datasets,transforms
from torch.utils.data import DataLoader
# transform.Compose是PyTorch中的一个类,用于将多个图像变换操作组合在一起。它的作用是将这些操作按照顺序依次应用于输入的图像数据。
trans = transforms.Compose([np.float32,transforms.ToTensor(),fixed_image_standardization
])dataset = datasets.ImageFolder(data_dir, transform=trans)
loader = DataLoader(dataset,num_workers=workers,batch_size=batch_size,collate_fn=training.collate_pil
)

在这里插入图片描述

3. Introduction of Imagefolder

# 定义输入图像的数据加载器
mytransform = transforms.Compose([transforms.RandomHorizontalFlip(),transforms.ToTensor(),])
dataset = datasets.ImageFolder(data_dir, transform=mytransform)	#对于图像,必须transform转成Tensor,才能for input,label in train_loader读取
print(dataset)
print(len(dataset))
print(len(dataset.imgs))
print(len(dataset.classes))
print(dataset.classes[-1])
print(dataset.classes)
print(dataset.imgs)

在这里插入图片描述

\root\cls1\img1.png\img2.png\cls2\img1.png\img2.png\cls3\img1.png\img2.png

(img,cls) in dataset.imgs

# img_list_1=[img for (img,idx) in dataset.imgs]
# with open("img_list_1.pkl","wb") as file:
#     pickle.dump(img_list_1,file)

DataLoader

  1. to loader data from example of torch.utils.data.Dataset
import torch
from torchvision import datasets, transforms# 创建数据加载器
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True, num_workers=4)
test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=64, shuffle=False, num_workers=4)# 使用数据加载器迭代样本
for images, labels in train_loader:# 训练模型的代码...

num_workers

link:加载 in batch的进程数

torchvision.transforms

from torchvision import transforms# 定义图像预处理操作
transform = transforms.Compose([transforms.Resize((256, 256)),  # 缩放图像大小为 (256, 256)transforms.RandomCrop((224, 224)),  # 随机裁剪图像为 (224, 224)transforms.RandomHorizontalFlip(),  # 随机水平翻转图像transforms.ToTensor(),  # 将图像转换为张量transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))  # 标准化图像
])# 对图像进行预处理
image = transform(image)

Image play with cv2,PIL.Image

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

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

相关文章

一句命令pip卸载所有已安装库

pip3 list --formatfreeze | grep -v ^\-e | grep -v pip | grep -v setuptools | cut -d -f 1 | xargs -n1 pip3 uninstall -y 这个命令的解释如下: pip list --formatfreeze:列出所有已安装的库及其版本号。grep -v ^\-e:排除那些以-e开…

华为OD面试手撕算法-合并排序数组

题目描述 本题是leetcode一道简单题:合并两个有序数组,但是对于时间和空间复杂度面试官明确给出了限制。 // 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 // 初始化…

maya移除节点 修改节点

目录 maya移除节点 使用 Maya 用户界面: 使用脚本: maya 修改节点名字 使用 Maya 用户界面: 使用 MEL 脚本: 使用 Python 脚本: 注意事项: maya移除节点 使用 Maya 用户界面: 在“层次…

Gin框架(3)

文件上传与下载 文件上传 单文件上传 单文件上传指的是一次只上传一个文件。在Gin中,可以使用c.SaveUploadedFile方法来保存单个上传的文件。 // SaveUploadedFile uploads the form file to specific dst. func (c *Context) SaveUploadedFile(file *multipart…

对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试:它们能否交付实时 API?

原文作者:Alessandro Fael Garcia of F5 原文链接:对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试:它们能否交付实时 API? 转载来源:NGINX 开源社区 NGINX 唯一中文官方社区 ,尽在 nginx.org.c…

HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程

HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程 📍相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》 ✨stm32使用硬件I2C去读取角度数据,通过STM32CubeMX工具配置工程,读取角度数据,只需要调用一个函数&#xf…

常见的服务器技术

常见的服务器技术 1.虚拟化技术:虚拟化技术允许在一台物理服务器上创建多个虚拟服务器,每个虚拟服务器都可以独立运行不同的操作系统和应用程序。这大大提高了服务器的资源利用率,并提供了更好的灵活性、可扩展性和可靠性。 2.负载均衡技术&…

谷歌(Google)技术面试——在线评估问题(一)

谷歌(Google)面试过程的第一步,你可能会收到一个在线评估链接。 评估有效期为 7 天,包含两个编码问题,需要在一小时内完成。 以下是一些供你练习的在线评估问题。 在本章结尾处,还提供了有关 Google 面试不…

使用 RisingWave、NATS JetStream 和 Superset 进行实时物联网监控

在物联网(IoT)背景下,处理实时数据会遇到一些特定的障碍,如边缘计算资源不足、网络条件限制、扩展性存在问题、设备间有多样性差异。要克服这些挑战,需要高效的边缘计算技术、强大的安全措施、标准化协议、可扩展的管理…

接口自动化框架搭建(六):多进程执行

1,背景目的 当测试用例太多之后,想缩短执行时间,就需要多线程或者多进程执行。 多线程执行: 每条测试用例是独立的,测试用例之间的参数不能共同使用 采坑举例:接口自动化中请求头是公共参数,…

Sqlite插入单引号和双引号,防止sql注入

1. 方法1 sqlite3_mprintf替换sprintf,%q替换%s. 1.1. 举例 修改前代码 //修改前, hello123写入失败char sql[1000]char* sql sprintf("UPDATE table SET name %s WHERE name_id %d","hello123", 1);rc sqlite3_exec(db, sql, NULL, NULL, &err…

WebGIS 地铁交通线网 | 图扑数字孪生

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展,地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎,结合 GIS 地图…

人人都离不开的算法:AI 时代的生存指南

文章目录 一、算法在生活中的“无处不在”二、算法在工作学习中的“智慧助力”三、算法在社会发展中的“驱动力量”四、算法带来的“双刃剑”效应五、应对算法挑战的策略《人人都离不开的算法——图解算法应用》编辑推荐1、通俗易懂2、技术科普3、贴近时代、贴近生活4、启发思考…

List、Set、Map 之间的区别是什么?

List、Set和Map之间的主要区别体现在它们的定义、特性、用途和常见实现上。 首先,List、Set和Map都是Java集合框架中的重要接口,用于存储和操作数据,但它们各自有不同的特性。 List(列表)是一个有序的集合&#xff0…

婴儿沐浴椅CPC认证 亚马逊沐浴椅子CPC认证

婴儿沐浴椅 如果您在亚马逊商城发布商品,则必须遵守适用于这些商品和商品信息的所有联邦、州和地方法律以及亚马逊政策(包括本政策)。 本政策适用的婴儿沐浴椅 婴儿沐浴椅是一种用于浴缸、盥洗盆或类似沐浴设备中的一种支撑物,…

深入剖析JavaScript中的this(上)

在Javascript中,this 关键字是一个非常重要的概念,this这个关键字可以说是很常见也用的很多,说它简单也很简单,说它难也很难。我们经常会用到this,也经常会因为this头疼,是一个经常被误解和误用的概念&…

基于DWT(离散小波变换)的图像加密水印算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

einops中的rearrange的使用方法

einops中的rearrange的使用方法 在 einops 中,rearrange 函数用于对张量进行重排操作,即重新排列张量的维度顺序或形状。它的语法如下: einops.rearrange(tensor, pattern)tensor:要重排的张量。 pattern:用于指定重排…

“继承MonoBehavior的泛型单例“本质上是一个单例模板

"继承MonoBehavior的泛型单例"本质上是一个单例模板,它可以用于管理其他所有继承自MonoBehaviour的单例类。通过继承这个泛型单例模板,可以确保每个单例类只有一个实例,并且这些实例在整个Unity应用程序中都是唯一的。这种模式使得…

华尔街基金经理为什么开始押注MVP币了?

目前,市场非常流行一种新兴的上市策略。 依靠正在被市场认可并有明显增长动力的 Meme 币,并围绕它构建一个社区,继而完成整个生态,最终,将由一系列产品完成生态的繁荣。 通过启动一个与热门 Meme 币原生集成的项目&a…