系统学习Pytorch笔记三:Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)

本文介绍了Pytorch的数据读取机制,包括DataLoader和Dataset的使用,以及图像预处理模块transforms的原理。DataLoader负责根据batch_size将数据分批读取,Dataset定义了数据的读取方式。transforms则包含多种图像预处理方法,如标准化、旋转、翻转等,用于图像增强和模型训练前的数据准备。文中通过人民币二分类任务举例,详细展示了DataLoader和transforms的实际应用。
摘要由CSDN通过智能技术生成

Pytorch官方英文文档:https://pytorch.org/docs/stable/torch.html?
Pytorch中文文档:https://pytorch-cn.readthedocs.io/zh/latest/

1. 写在前面

疫情在家的这段时间,想系统的学习一遍Pytorch基础知识,因为我发现虽然直接Pytorch实战上手比较快,但是关于一些内部的原理知识其实并不是太懂,这样学习起来感觉很不踏实, 对Pytorch的使用依然是模模糊糊, 跟着人家的代码用Pytorch玩神经网络还行,也能读懂,但自己亲手做的时候,直接无从下手,啥也想不起来, 我觉得我这种情况就不是对于某个程序练得不熟了,而是对Pytorch本身在自己的脑海根本没有形成一个概念框架,不知道它内部运行原理和逻辑,所以自己写的时候没法形成一个代码逻辑,就无从下手。 这种情况即使背过人家这个程序,那也只是某个程序而已,不能说会Pytorch, 并且这种背程序的思想本身就很可怕, 所以我还是习惯学习知识先有框架(至少先

PyTorch中,图像数据的归一化可以通过使用torchvision.transforms.Normalize()函数来实现。该函数需要传入个参数,分别是均值(mean)、标准差(std)、以及一个布尔值,用来指示是否将图像像素值剪裁到0和1之间。 具体的步骤如下: 1. 首先,根据数据集计算图像的均值和标准差。可以使用torchvision.datasets.ImageFolder()函数加载数据集,并使用torch.utils.data.DataLoader()函数生成一个数据加载器。 2. 接下来,使用torchvision.transforms.Compose()函数将多个图像预处理操作组合起来。常见的预处理操作包括图像尺寸调整、裁剪、翻转、旋转等。 3. 在组合的图像预处理操作中,添加torchvision.transforms.ToTensor()函数,将图像转换为张量形式。 4. 最后,添加torchvision.transforms.Normalize()函数,传入计算得到的均值和标准差作为参数,并设置布尔值为True,以剪裁图像像素值到0和1之间。 参考代码如下所示: ``` import torchvision.transforms as transforms # 计算数据集的均值和标准差 dataset = torchvision.datasets.ImageFolder(root='dataset_path', transform=transforms.ToTensor()) data_loader = torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=True) mean = 0.0 std = 0.0 for images, _ in data_loader: batch_mean = torch.mean(images, dim=(0, 2, 3)) batch_std = torch.std(images, dim=(0, 2, 3)) mean += batch_mean std += batch_std mean /= len(data_loader) std /= len(data_loader) # 图像预处理操作 preprocess = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize(mean, std) ]) # 使用预处理操作对图像进行归一化处理 normalized_image = preprocess(image) ```
评论 113
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值