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.hqwc.cn/news/588668.html

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

相关文章

排序算法-归并排序

Leetcode链接:. - 力扣(LeetCode) 归并:将原始数组划分为若干个子数组,然后将这些子数组分别排序,最后再将已排序的子数组合并成一个有序的数组。是一种分治思想 思路: 1.分 2.治 3.怎么治 …

Codeforces TypeDB Forces 2023 C. Remove the Bracket【上下界DP】

C. Remove the Bracket 题意 给定一个长度为 n n n 的整数数组 a a a 和一个非负整数 s s s 要求 ∀ i ∈ [ 2 , n − 1 ] , 选定两个整数 x i , y i ,满足 x i y i s 且 ( x i − s ) ( y i − s ) ≥ 0 \forall i \in [2,n - 1],选定两个整数 x_i, y_i&am…

恶意勒索Word文档模版注入分析

文章目录 前言1、工具:2、IOC样本:3、样本提取4、恶意文档分析参考手册 恶意的文档执行流程一、使用 OLEDUMP 和 OLEVBA 分析Word 文档1、OlEDUMP2、OLEVBA 二、使用 Detect-It Easy 识别文件类型-简单三、使用 7-zip 探索 OOXML 文档并查找模板注入四、…

程序员为什么要一直写 bug ?

程序员并不是故意写bug的,bug的产生通常是由多种因素导致的,例如: 需求理解不足:如果程序员没有完全理解项目的需求或者功能要求,可能会在编程过程中遗漏一些重要的细节,导致bug的产生。编程经验不足&…

Three.js真实相机模拟

有没有想过如何在 3D Web 应用程序中模拟物理相机? 在这篇博文中,我将向你展示如何使用 Three.js和 OpenCV 来完成此操作。 我们将从模拟针孔相机模型开始,然后添加真实的镜头畸变。 具体来说,我们将仔细研究 OpenCV 的两个失真模…

是谁?写的Java神作一出版就获Jolt图书大奖【抽奖赠书】

送书活动 1️⃣参与方式:点此参与抽书抽奖 2️⃣获奖方式:小程序随机 抽5位,每位小伙伴一本《Effective Java中文2024版》 3️⃣活动时间:截止到 2024-4-6 12:01:00 注:所有抽奖活动都是全国范围免费包邮到家&#xff…

openldap(一):简介和安装

目录 1 OpenLDAP简介1.1 LDAP介绍1、什么LDAP2、为什么要使用LDAP3、LDAP 的特点4、LDAP常用关键字5、LDAP的objectClass6、LADP使用场景 1.2 OpenLDAP介绍1、什么OpenLDAP2、OpenLDAP特点3、OpenLDAP的组件 2 OpenLDAP安装3 简单使用3.1 创建用户1、创建ou2、创建Group 3、创建…

Oracle基础-PL/SQL编程 备份

1、PL/SQL简介 PL/SQL块结构 约定:为了方便,本文后面把PL/SQL简称PL。 PL程序都是以块(BLOCK)为基本单位,整个PL块分三部分:声明部分(使用DECLARE开头)、执行部分(以BEGIN开头)和异…

springboot之RESTful接口与Swagger

一、RESTful GET获取资源、POST新建资源、PUT更新资源、DELETE删除资源。 RESTful两大特性 1、安全性:GET请求不会引起资源本身改变。 2、幂等性:对一个接口请求和多次请求返回的资源应该一致。 2xx:成功 4xx:客户端错误。 …

windows 设置共享文件夹

1、选择您要共享的文件夹,并右键点击该文件夹。在弹出的菜单中,选择“属性”选项。属性窗口中,选择“共享”选项卡 2、在共享选项卡中,点击“高级共享”按钮,勾选“共享此文件夹”选项。可以根据需要设置共享文件夹的…

全数字化病理,“根深”才能“叶茂”

现代医学之父William Osler曾言:病理学乃医学之本。 作为研究人体疾病发生的原因、发病机制、病理变化以及疾病过程中机体的形态结构、功能代谢变化和病变转归的一门基础医学科学,病理学一直被视为基础医学与临床医学之间的“桥梁学科”,在医…

数码论坛系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)电子科技数码爱好者交流信息新闻畅聊讨论评价

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…